-
-
Notifications
You must be signed in to change notification settings - Fork 9.8k
CLI: CSF factories codemod - support annotations in npx context #32741
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
Conversation
📝 WalkthroughWalkthroughThe addon preview resolution mechanism in a utility function is updated to switch from ESM's Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes ✨ Finishing touches
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
code/core/src/common/utils/get-addon-annotations.ts (1)
42-43: Correctly fixes addon resolution in npx context.The switch from
import.meta.resolve()tocreateRequire()+require.resolve()with{ paths: [configDir] }ensures that addon preview modules are resolved relative to the project's configuration directory. This fixes the issue where addons were not detected when running vianpx storybook automigrate csf-factories.Consider adding a brief comment explaining why
createRequireis used instead ofimport.meta.resolvefor future maintainers:// If the preview endpoint doesn't exist, we don't need to add the addon to definePreview try { + // Use createRequire to resolve addon preview relative to configDir, + // ensuring correct resolution in npx context const require = createRequire(import.meta.url); require.resolve(`${addon}/preview`, { paths: [configDir] });
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
code/core/src/common/utils/get-addon-annotations.ts(2 hunks)
🧰 Additional context used
📓 Path-based instructions (4)
**/*.{js,jsx,json,html,ts,tsx,mjs}
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
**/*.{js,jsx,json,html,ts,tsx,mjs}: Run Prettier formatting on changed files before committing
Run ESLint on changed files and fix all errors/warnings before committing (useyarn lint:js:cmd <file>)
Files:
code/core/src/common/utils/get-addon-annotations.ts
**/*.{ts,tsx,js,jsx,mjs}
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
Export functions from modules when they need to be unit-tested
Files:
code/core/src/common/utils/get-addon-annotations.ts
code/**/*.{ts,tsx,js,jsx,mjs}
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
In application code, use Storybook loggers instead of
console.*(client code:storybook/internal/client-logger; server code:storybook/internal/node-logger)
Files:
code/core/src/common/utils/get-addon-annotations.ts
{code/**,scripts/**}/**/*.{ts,tsx,js,jsx,mjs}
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
Do not use
console.log,console.warn, orconsole.errordirectly unless in isolated files where importing loggers would significantly increase bundle size
Files:
code/core/src/common/utils/get-addon-annotations.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: get-parameters
- GitHub Check: get-branch
- GitHub Check: Danger JS
- GitHub Check: Core Unit Tests, windows-latest
🔇 Additional comments (1)
code/core/src/common/utils/get-addon-annotations.ts (1)
1-1: LGTM!The import of
createRequirefrom the built-innode:moduleis necessary for the fix and introduces no external dependencies.
|
View your CI Pipeline Execution ↗ for commit cc844cd
☁️ Nx Cloud last updated this comment at |
| const require = createRequire(import.meta.url); | ||
| require.resolve(`${addon}/preview`, { paths: [configDir] }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We do this, because import.meta.resolve does not natively support the "from path" functionality yet.
It will in the future; but not yet.
Closes #32626
What I did
The csf factories syncing mechanism was working locally but not when running
npx storybook automigrate csf-factories, becauseimport.meta.resolvedoesn't account for the origin path. This PR uses createRequire instead, which respects the configDir as origin path and therefore fixes the detection of addon annotationsChecklist for Contributors
Testing
The changes in this PR are covered in the following automated tests:
Manual testing
This section is mandatory for all contributions. If you believe no manual test is necessary, please state so explicitly. Thanks!
Documentation
MIGRATION.MD
Checklist for Maintainers
When this PR is ready for testing, make sure to add
ci:normal,ci:mergedorci:dailyGH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found incode/lib/cli-storybook/src/sandbox-templates.tsMake 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 pull request has been released as version
0.0.0-pr-32741-sha-cc844cd8. Try it out in a new sandbox by runningnpx [email protected] sandboxor in an existing project withnpx [email protected] upgrade.More information
0.0.0-pr-32741-sha-cc844cd8yann/fix-csf-codemod-getting-annotationscc844cd81760613266)To request a new release of this pull request, mention the
@storybookjs/coreteam.core team members can create a new canary release here or locally with
gh workflow run --repo storybookjs/storybook publish.yml --field pr=32741Summary by CodeRabbit