这对于安装你自己的东西很方便,这样你就可以在它上面工作和迭代测试,而不必不断地重建。
包链接是一个两步过程。
首先,没有参数的包文件夹中的 npm link 将在全局文件夹 {prefix}/lib/node_modules/<package> 中创建一个符号链接,该符号链接链接到执行 npm link 命令的包。它还将包装中的任何垃圾箱链接到 {prefix}/bin/{name}。请注意,npm link 使用全局前缀(参见 npm prefix -g 的值)。
接下来,在某个其他位置,npm link package-name 将创建一个从全局安装的 package-name 到当前文件夹的 node_modules/ 的符号链接。
请注意,package-name 取自 package.json,而不是目录名称。
包名称可以选择以范围为前缀。见 scope。范围必须以@-符号开头,后跟斜杠。
在为 npm publish 创建 tarball 时,如果链接包包含在 bundleDependencies 中,则通过解析符号链接,链接的包将 "snapshotted" 恢复到其当前状态。
例如:
cd ~/projects/node-redis # go into the package directory
npm link # creates global link
cd ~/projects/node-bloggy # go into some other package directory.
npm link redis # link-install the package
现在,对 ~/projects/node-redis 的任何更改都将反映在 ~/projects/node-bloggy/node_modules/node-redis/ 中。请注意,链接应该指向包名称,而不是该包的目录名称。
您也可以将这两个步骤合二为一。例如,以更短的方式执行上述用例:
cd ~/projects/node-bloggy # go into the dir of your main project
npm link ../node-redis # link the dir of your dependency
第二行相当于做:
(cd ../node-redis; npm link)
npm link redis
即它首先创建一个全局链接,然后将全局安装目标链接到你项目的node_modules文件夹中。
请注意,在这种情况下,您指的是目录名称 node-redis,而不是包名称 redis。
如果您的链接包有范围(参见 scope),您的链接命令必须包含该范围,例如
npm link @myorg/privatepackage