我以为我明白两者之间的区别
npm link x
和
npm install /local/path/to/x
最初我认为前者创建了指向 x 的符号链接,而后者在您的项目中安装了 x 的单独副本,而不是对其进行符号链接。
但是,我最近注意到我最初的印象是错误的,它们似乎都使用符号链接 - 那么两者之间有什么区别吗?
我以为我明白两者之间的区别
npm link x
和
npm install /local/path/to/x
最初我认为前者创建了指向 x 的符号链接,而后者在您的项目中安装了 x 的单独副本,而不是对其进行符号链接。
但是,我最近注意到我最初的印象是错误的,它们似乎都使用符号链接 - 那么两者之间有什么区别吗?
Alex Mills在 Medium 上的一篇文章对此进行了说明。
npm link x
它说和之间的区别npm install /local/path/to/x
是:
最大的不同是npm install /local/path/x
它将运行 preinstall/postinstall 钩子,但npm link x
不会。
npm link
使用全局 NPM 空间,npm install /local/path/x
不使用。npm link 在全局空间中创建指向 x 的符号链接,然后当您从 y 调用 npm link x 时,它不会直接创建指向 x 的符号链接,而是创建指向全局符号链接的符号链接。如果您使用不同的全局 node.js 版本,例如 NVM,这是一个重要的区别。
npm install /absolute/path/x
会改变 package.json,npm link x
不会。
要获取新的本地副本而不是符号链接,请使用npm pack
,如下所示:
tgz="$PWD/$(npm pack)"
cd <other project>
npm install "$tgz"
您也可以使用 cp/rsync,但这不会运行安装钩子或将可执行文件放入node_modules/.bin
......这将起作用。
npm 链接
npm link
npm link <folder>
上述两个命令都将<folder>
在全局包中创建一个符号链接。
现在将为您当前的项目npm link <folder>
在您的文件夹中符号链接相同的符号。node_modules
这些名称将基于项目名称,package.json
而不是基于您链接的文件夹名称
您当前项目的package.json
将不会被触摸或更改
如您在此处的代码中所见,仍将安装软件包的依赖项
所以总结一下
npm 安装
现在npm install <folder>
和这个有点不同