npm link 会做两件事:

  • 往 npm get prefix 下的 lib/node_modules 安装了这个包(用 ln -s 创建的软链)
  • 往 npm get prefix 下的 bin 里放了这个包里注册的命令(用 ln -s 创建的软链)

用起来和 npm install -g 的包的命令没区别。

删除自然也是用 npm uninstall -g xxx 来删,删除软链不影响源文件。

所以说,npm link 就是用软链模拟了 npm install -g。

此外,npm link 还有一个作用。

npm link my-nest-cli

打印和 npm install 一样,提示添加了一个包。

查看 link 是否成功。

npm ls -g

npm link 的原理是这样的:

npm link xxx 的原理是这样的:

总结

上节我们通过 npm link 来把项目安装到了全局,并且注册了全局命令。

用起来很方便。

这节我们探究了下实现原理。

原理就是软链接

npm link 会做两件事:

  • 在 npm get prefix 下的 lib/node_modules 安装了这个包(用 ln -s 创建的软链)
  • 在 npm get prefix 下的 bin 里放了这个包里注册的命令(用 ln -s 创建的软链)

而 npm link xxx 则是再把这个包 link 到项目的 node_modules 下,并且把命令 link 到项目的 node_modules/.bin 下。

其实和 npm install 一样,就是用软链模拟的 npm install 的过程。

所以删除自然也是用 npm uninstall

软链在 node 生态里有很多应用,之后我们会继续探究。

扩展阅读