Skip to content

ESM: Update documentation to use valid ESM #32067

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Jul 22, 2025

Conversation

ndelangen
Copy link
Member

@ndelangen ndelangen commented Jul 17, 2025

Works on: #31787

What I did

I updated all documentation to use import.meta.resolve over require.resolve use process.cwd() over __dirname etc.

Checklist for Contributors

Testing

The changes in this PR are covered in the following automated tests:

  • stories
  • unit tests
  • integration tests
  • end-to-end tests

Manual testing

This section is mandatory for all contributions. If you believe no manual test is necessary, please state so explicitly. Thanks!

Documentation

  • Add or update documentation reflecting your changes
  • If you are deprecating/removing a feature, make sure to update
    MIGRATION.MD

Checklist for Maintainers

  • When this PR is ready for testing, make sure to add ci:normal, ci:merged or ci:daily GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found in code/lib/cli-storybook/src/sandbox-templates.ts

  • Make sure this PR contains one of the labels below:

    Available labels
    • bug: Internal changes that fixes incorrect behavior.
    • maintenance: User-facing maintenance tasks.
    • dependencies: Upgrading (sometimes downgrading) dependencies.
    • build: Internal-facing build tooling & test updates. Will not show up in release changelog.
    • cleanup: Minor cleanup style change. Will not show up in release changelog.
    • documentation: Documentation only changes. Will not show up in release changelog.
    • feature request: Introducing a new feature.
    • BREAKING CHANGE: Changes that break compatibility in some way with current major version.
    • other: Changes that don't fit in the above categories.

🦋 Canary release

This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the @storybookjs/core team here.

core team members can create a canary release here or locally with gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=<PR_NUMBER>

Greptile Summary

This PR updates Storybook's documentation and code snippets to use ESM-compatible syntax instead of CommonJS patterns, as part of Storybook's transition to ESM-only in version 10. The key changes include:

  • Replacing require.resolve() with import.meta.resolve()
  • Replacing __dirname with process.cwd()
  • Removing legacy storiesOf API documentation examples
  • Converting CommonJS imports to ESM syntax
  • Renaming the config function to previewAnnotations in preset configurations

These changes are part of a larger initiative (issue #31787) to make Storybook ESM-only, which aims to reduce install size by 37% and address development/debugging pain points caused by having both ESM and CommonJS outputs.

Confidence score: 5/5

  1. This PR is safe to merge as it only updates documentation to reflect current best practices
  2. The changes are consistent across all documentation files and align with the ESM migration goals
  3. Files that need attention: None, as changes are straightforward documentation updates

32 files reviewed, 6 comments
Edit PR Review Bot Settings | Greptile

@ndelangen ndelangen added documentation ci:docs Run the CI jobs for documentation checks only. esm labels Jul 17, 2025
@ndelangen ndelangen self-assigned this Jul 17, 2025
@ndelangen ndelangen marked this pull request as ready for review July 17, 2025 12:33
Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewing changes made in this pull request

@@ -4,8 +4,7 @@ import { storybookTest } from '@storybook/addon-vitest/vitest-plugin';
import path from 'node:path';
import { fileURLToPath } from 'node:url';

const dirname =
typeof __dirname !== 'undefined' ? __dirname : path.dirname(fileURLToPath(import.meta.url));
const dirname = path.dirname(fileURLToPath(import.meta.url));

import viteConfig from './vite.config';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

style: Move import statements above code to follow ESM best practices

Suggested change
import viteConfig from './vite.config';
import { defineConfig, mergeConfig } from 'vitest/config';
import { storybookTest } from '@storybook/addon-vitest/vitest-plugin';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import viteConfig from './vite.config';
const dirname = path.dirname(fileURLToPath(import.meta.url));

@@ -51,40 +52,41 @@ import { fileURLToPath } from 'node:url';

import viteConfig from './vite.config';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

style: Same import order issue as in React example - move viteConfig import to top

Suggested change
import viteConfig from './vite.config';
import { defineConfig, mergeConfig } from 'vitest/config';
import { storybookTest } from '@storybook/addon-vitest/vitest-plugin';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import viteConfig from './vite.config';
const dirname = path.dirname(fileURLToPath(import.meta.url));

@@ -94,8 +96,7 @@ import { storybookTest } from '@storybook/addon-vitest/vitest-plugin';
import path from 'node:path';
import { fileURLToPath } from 'node:url';

const dirname =
typeof __dirname !== 'undefined' ? __dirname : path.dirname(fileURLToPath(import.meta.url));
const dirname = path.dirname(fileURLToPath(import.meta.url));

import viteConfig from './vite.config';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

style: Same import order issue as in React example - move viteConfig import to top

Suggested change
import viteConfig from './vite.config';
import { defineConfig, mergeConfig } from 'vitest/config';
import { storybookTest } from '@storybook/addon-vitest/vitest-plugin';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import viteConfig from './vite.config';
const dirname = path.dirname(fileURLToPath(import.meta.url));

export default {
addons: [
{
name: '@storybook/addon-docs',
options: {
vueDocgenOptions: {
alias: {
'@': path.resolve(__dirname, '../'),
'@': path.resolve(process.cwd(), 'src'),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

syntax: path.resolve() is used without importing path. Add import statement: import { resolve } from 'path'

Suggested change
'@': path.resolve(process.cwd(), 'src'),
import { resolve } from 'node:path';
export default {
addons: [
{
name: '@storybook/addon-docs',
options: {
vueDocgenOptions: {
alias: {
'@': resolve(process.cwd(), 'src'),
},
},
},
},
],
};

Copy link

nx-cloud bot commented Jul 17, 2025

View your CI Pipeline Execution ↗ for commit ea1fbc3

Command Status Duration Result
nx run-many -t build --parallel=3 ✅ Succeeded 49s View ↗

☁️ Nx Cloud last updated this comment at 2025-07-22 14:49:56 UTC

Copy link
Contributor

@kylegach kylegach left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a few suggestions to be addressed, but I'll approve to unblock. Thanks!

@ndelangen ndelangen merged commit 1c2b4b5 into sb10/esm-only Jul 22, 2025
7 checks passed
@ndelangen ndelangen deleted the norbert/esm-docs-changes branch July 22, 2025 14:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ci:docs Run the CI jobs for documentation checks only. documentation esm
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants