npm link 全方位解读

3,179 阅读2分钟

本文参考了NPM中文文档写作而成的

npm link 功能

链接到包文件夹

npm link 使用

npm link (in package dir)
npm link [<@scope>/]<pkg>[@<version>]

alias: npm ln

npm link 说明

程序包链接是一个两步过程。

首先,npm link 在包文件夹中,将在全局文件夹{prefix}/lib/node_modules/中创建一个符号链接,该 链接链接到 npm link 执行命令的包。(请参阅 ` [npm config](https://www.axihe.com/api/npm/cli/npm-config.html) 以获取的值 prefix)。它还会将包装中的所有垃圾箱链接到{prefix}/bin/{name}`。

接下来,在其他位置,npm link package-name 将创建一个从全局安装 package-name 到 node_modules/ 当前文件夹的符号链接。

请注意,该 package-name 取自 package.json,而不是目录名称。

包名称可以可选地以范围为前缀。请参阅 npm-scope。作用域之前必须加一个 @符号,再加上一个斜杠。

在为创建 tarball 时 npm publish,通过解析符号链接将链接的程序包“快照”到其当前状态。

这对于安装您自己的东西很方便,因此您可以对其进行处理并对其进行迭代测试,而不必不断进行重建。

例如:

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。

如果链接的程序包是作用域的(请参阅参考资料 npm-scope),则 link 命令必须包含该作用域,例如

npm link @myorg/privatepackage

本文参考NPM中文文档