Uh oh!
There was an error while loading. Please reload this page.
fix(arborist): handle npm link with install-strategy=linked - #9167
Conversation
6d9bdb8 to
3f0b5f8Comparemanzoorwanijk
commented
Mar 30, 2026
@wraithgar I am not sure why CI fails with |
owlstronaut
commented
Mar 31, 2026
don't worry about that, it is unrelated: nodejs/node#62425 |
3f0b5f8 to
9e74d1bComparemanzoorwanijk
commented
Apr 17, 2026
CI seems to be happy now |
Uh oh!
There was an error while loading. Please reload this page.
🎉 Backport to |
manzoorwanijk
commented
Apr 17, 2026
Nice! Now we don’t need to do backports manually 👍 |
wraithgar
commented
Apr 17, 2026
Backports are only for v11 since we're in prerelease mode for v12. v10 likely only going to get critical updates now. |
manzoorwanijk
commented
Apr 17, 2026
Yes, makes sense. Thanks |
In continuation of our exploration of using
install-strategy=linkedin the Gutenberg monorepo, which powers the WordPress Block Editor.npm linkis completely broken withinstall-strategy=linked.Both
npm link <path>andnpm link <pkg>(via global) crash withENOENTbecause the isolated reifier tries to extract the linked package into.store/instead of symlinking it.The root cause is that
npm linkcreates afile:dependency pointing outside the project root.The Link node ends up in
idealTree.children(notfsChildren) because its path isroot/node_modules/<name>.The isolated reifier doesn't recognize it as a local dependency, so it routes it through
#externalProxywhich tries to extract it into the store.The
file:relative path then gets resolved from the store entry location instead of the project root, producing a wrong absolute path.The fix detects Link nodes with
file:resolved paths and treats them as workspace-like local dependencies.Instead of extracting into
.store/, they get symlinked directly innode_modules/, matching the behavior of the hoisted strategy.References
Fixes#9166