Skip to content
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

Open
2 tasks done
i-like-robots opened this issue Dec 5, 2024 · 5 comments
Open
2 tasks done
Labels
Bug thing that needs fixing Needs Triage needs review for next steps

Comments

@i-like-robots
Copy link

i-like-robots commented Dec 5, 2024

Is there an existing issue for this?

  • I have searched the existing issues

This issue exists in the latest npm version

  • I am using the latest npm

Current Behavior

Starting from npm v10.3.0, optional dependencies for OS and CPU package variants are being pruned from package-lock.json when running npm install and a node_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 ❌:

  1. mkdir test && cd test
  2. npm init -y
  3. npm i -D rollup
  4. Read package-lock.json - observe 18 OS/CPU@rollup/* package variants are listed
  5. rm package-lock.json
  6. npm i
  7. Read package-lock.json - observe only 1 OS/CPU @rollup/* package variant is now listed for the current platform

Expected behaviour test 1 ✅:

  1. mkdir test && cd test
  2. npm init -y
  3. npm i -D rollup
  4. Read package-lock.json - observe 18 OS/CPU@rollup/* package variants are listed
  5. rm -rf node_modules
  6. npm i
  7. Read package-lock.json - observe 18 OS/CPU@rollup/* package variants are listed

Expected behaviour test 2 ✅:

  1. mkdir test && cd test
  2. npm init -y
  3. npm i -D rollup
  4. Read package-lock.json - observe 18 OS/CPU@rollup/* package variants are listed
  5. npm i -D esbuild
  6. Read package-lock.json - observe 18 OS/CPU@rollup/* package variants are listed

Environment

  • npm: 10.9.2
  • Node.js: 22.17
  • OS Name: macOS 14.5
  • System Model Name: M1 Macbook Pro
  • npm config:
; node bin location = /Users/xxx/.nvm/versions/node/v20.17.0/bin/node
; node version = v20.17.0
; npm local prefix = /Users/xxx/Projects/test
; npm version = 10.9.2
; cwd = /Users/xxx/Projects/test
; HOME = /Users/xxx
; Run `npm config ls -l` to show all defaults.
@i-like-robots i-like-robots added Bug thing that needs fixing Needs Triage needs review for next steps labels Dec 5, 2024
@i-like-robots i-like-robots changed the title [BUG] <title> [BUG] optional dependencies for OS/CPU package variants are being pruned unexpectedly Dec 5, 2024
@kchindam-infy
Copy link

@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

@i-like-robots
Copy link
Author

i-like-robots commented Dec 8, 2024

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

@kchindam-infy
Copy link

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-like-robots
Copy link
Author

i-like-robots commented Dec 11, 2024

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.

Screenshot 2024-12-11 at 11 26 17

@kchindam-infy
Copy link

@i-like-robots checked the issue with the updated versions npm 10.9.2 what u mention getting the expected behaviour for my self.
Screenshot 2024-12-27 at 10 48 20 PM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug thing that needs fixing Needs Triage needs review for next steps
Projects
None yet
Development

No branches or pull requests

2 participants