[BUG] npm generates build output impossible to archive under Windows
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 10.1k
- Forks
- 4.7k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 19
Description
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
Some package dependencies may result into a node_modules build output containing folder links to some parents of themselves.
Under Windows, these links are created as junctions, see #5189. Junctions are not symbolic links and no archive tooling seem able to keep them as links, they dereference them when archiving. This results in an infinite loop with some crashes at some point.
So, effectively, such project build output of npm cannot be put in a archive file, and cannot be moved to another computer for deployment.
Expected Behavior
Npm should generate build output that can be put in an archive file.
Steps To Reproduce
- Under Windows (11 24H2) with Node.js 22.17.1 and npm 11.4.2
- Create a new nuxt project:
npm create nuxt@latest npm-loop(Nuxt 4.0.1 currently) with minimal options (no modules). cd npm-loop- Edit the package.json file Vue dependency: downgrade it to 3.5.13 without a caret.
"vue": "3.5.13". - Run
npm i. - Run
npm run build - Run
tar -czvf output.tar.gz .output
The tar command fails by looping endlessly.
tar.exe: .output/server/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/server-renderer/node_modules/vue/node_modules/@vue/compiler-dom: Cannot stat: Invalid argument
tar.exe: Error exit delayed from previous errors.
(Vue 3.5.13 is the latest version which does not trigger a reactivity bug causing some parts of our web pages to no more get updated at some point, despite the computed they depends on is updated and its updates are still reflected in other parts of the same page, even on sub tags of tags having attribute nor more updated by the same computed... Subsequent versions including latest current one 3.5.18 cause this kind of bugs in our web app.)
Environment
- npm: 11.4.2
- Node.js: 22.17.1
- OS Name: Windows 11 24H2 26100.4652 (originally spotted on Windows Server 2022)
- System Model Name: DELL Latitude 5550 (originally spotted on an AWS EC2 t3.large)
- npm config:
; "builtin" config from C:\Users\fdelaporte\AppData\Roaming\npm\node_modules\npm\npmrc
prefix = "C:\\Users\\fdelaporte\\AppData\\Roaming\\npm"
; node bin location = C:\Program Files\nodejs\node.exe
; node version = v22.17.1
; npm local prefix = D:\Tests\TestsNode\npm-loop
; npm version = 11.4.2
; cwd = D:\Tests\TestsNode\npm-loop
; HOME = C:\Users\fdelaporte
; Run `npm config ls -l` to show all defaults.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the issue with the listed Windows, Node.js, npm, Nuxt, and Vue versions, starting from package.json and the npm install/build/tar command sequence. Inspect how the build output creates the recursive junctions and compare the result with archiving .output. Done means the generated output can be archived without an infinite loop or dereferencing failure.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, nodejs, nuxt
- Domain
- build-system, cli, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100