-
Notifications
You must be signed in to change notification settings - Fork 3.2k
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
[BUG] optional dependencies for OS/CPU package variants are being pruned unexpectedly #7961
Comments
@i-like-robots by running the above commands u mentioned we are not getting any issue which above mentioned. by running the commands above mentioned by u we get 18 package variants before deleting the package-lock.json and after deleting package-lock.json we get the same 18 package variants.this is not an issue |
Thanks for your comment @kchindam-infy, unfortunately we have multiple users affected by this issue and I am able to recreate the issue myself on multiple machines, node and npm versions. If it helps to diagnose the issue further, I have made a screen recording performing the steps reproducing the unexpected behaviour; Screen.Recording.2024-12-08.at.21.35.16.min.mov |
Hi @i-like-robots This is not reproducible in 10.9.2 latest npm . The video you share npm version shows 10.9.0. Update to latest version and try again |
I can confirm this is still an issue in v10.9.2 @kchindam-infy and this has also been confirmed by multiple users on M1-M4 equipped MacBooks. |
@i-like-robots checked the issue with the updated versions npm 10.9.2 what u mention getting the expected behaviour for my self. |
Is there an existing issue for this?
This issue exists in the latest npm version
Current Behavior
Starting from npm v10.3.0, optional dependencies for OS and CPU package variants are being pruned from
package-lock.json
when runningnpm install
and anode_modules
folder is present. This breaks npm installs when the resulting lockfile is pulled onto other platforms - such as devs working on their Macs (darwin/arm64) who are pushing their code to CI (linux/x64). This change in behaviour does not appear to be intentional as it is not documented or referenced anywhere. Possibly related to #7543. Possibly a dupe of #4828 and #7750.The issue may be mitigated by deleting
node_modules/
before running the install command.Expected Behavior
Optional OS and CPU package variants should not be pruned from
package-lock.json
as was the behaviour prior to npm v10.3.0 to allow the lockfile to be used for cross-platform installs.Steps To Reproduce
Unexpected behaviour ❌:
mkdir test && cd test
npm init -y
npm i -D rollup
package-lock.json
- observe 18 OS/CPU@rollup/*
package variants are listedrm package-lock.json
npm i
package-lock.json
- observe only 1 OS/CPU@rollup/*
package variant is now listed for the current platformExpected behaviour test 1 ✅:
mkdir test && cd test
npm init -y
npm i -D rollup
package-lock.json
- observe 18 OS/CPU@rollup/*
package variants are listedrm -rf node_modules
npm i
package-lock.json
- observe 18 OS/CPU@rollup/*
package variants are listedExpected behaviour test 2 ✅:
mkdir test && cd test
npm init -y
npm i -D rollup
package-lock.json
- observe 18 OS/CPU@rollup/*
package variants are listednpm i -D esbuild
package-lock.json
- observe 18 OS/CPU@rollup/*
package variants are listedEnvironment
The text was updated successfully, but these errors were encountered: