我以为我理解了两者之间的区别
npm link x
和
npm install /local/path/to/x
最初我认为前者在创建一个到x的符号链接,而后者则安装了x的一个独立副本到你的项目中,而不是通过符号链接来使用它。
然而,最近我发现我的初始印象是错误的,它们似乎都使用符号链接 - 那么这两者之间有什么区别,是什么呢?
我以为我理解了两者之间的区别
npm link x
和
npm install /local/path/to/x
最初我认为前者在创建一个到x的符号链接,而后者则安装了x的一个独立副本到你的项目中,而不是通过符号链接来使用它。
然而,最近我发现我的初始印象是错误的,它们似乎都使用符号链接 - 那么这两者之间有什么区别,是什么呢?
Medium 上的一篇文章,作者是 Alex Mills。
它说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 link
npm link
npm link <folder>
以上两个命令都会在全局包中创建<folder>
的符号链接。
现在,npm link <folder>
还会为当前项目将其符号链接到node_modules
文件夹中。这些名称将基于package.json
中的项目名称,而不是您正在链接的文件夹名称。
当前项目的package.json
不会被修改。
该软件包的依赖项仍将被安装,如下面的代码所示:
因此,总结一下:
package.json
。npm install
现在,npm install <folder>
与此有点不同:
package.json
的引用。
npm link
可以与 Git 一起使用,而npm install /absolute/local/path
则不行。 - Merchako