Core: Do not add packageManager field to package.json during storybook dev
#29152
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #29146
What I did
We run
pnpm --version
in a try/catch block to determine whether the user has pnpm installed to detect the right package manager. I guess that since pnpm 8, pnpm will add apackageManager
to the package.json if corepack is enabled and if you run the pnpm CLI, even if it is about to check the pnpm version viapnpm --version
.The fix is to set
COREPACK_ENABLE_STRICT
to0
when runningpnpm --version
. This leads to thepackageManager
field not automatically being added to the user's package.json. Theyarn
CLI suffers under the same symptoms of addingpackageManager
fields to the package.json file. Therefore, it is necessary to apply the same fix there as well.The bug was very likely introduced by #26219.
Checklist for Contributors
Testing
The changes in this PR are covered in the following automated tests:
Manual testing
corepack enable
npx storybook@0.0.0-pr-29152-sha-0d238e2d init
in an empty directorynpm run storybook
package.json
does not contain apackageManager
field.Documentation
MIGRATION.MD
Checklist for Maintainers
When this PR is ready for testing, make sure to add
ci:normal
,ci:merged
orci:daily
GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found incode/lib/cli/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 pull request has been released as version
0.0.0-pr-29152-sha-0d238e2d
. Try it out in a new sandbox by runningnpx storybook@0.0.0-pr-29152-sha-0d238e2d sandbox
or in an existing project withnpx storybook@0.0.0-pr-29152-sha-0d238e2d upgrade
.More information
0.0.0-pr-29152-sha-0d238e2d
valentin/fix-package-manager-addition-to-package-json
0d238e2d
1726736538
)To request a new release of this pull request, mention the
@storybookjs/core
team.core team members can create a new canary release here or locally with
gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=29152
Greptile Summary
This pull request addresses an issue where running
storybook dev
inadvertently added apackageManager
field to the user's package.json file.code/core/src/common/js-package-manager/JsPackageManagerFactory.ts
to setCOREPACK_ENABLE_STRICT=0
when checking npm and pnpm versionspackageManager
field, likely introduced by pnpm 8 with corepack enablednpm run storybook
#29146 where Storybook was injecting pnpm version information into package.json