npm-link
符号链接包文件夹概要
npm link (in package dir)npm link [<@scope>/]<pkg>[@<version>]alias: npm ln
描述
包链接是一个两步过程。
首先,包文件夹中的 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 时,通过解析符号链接,链接的包是 "snapshotted" 到它们的当前状态。
这对于安装你自己的东西很方便,这样你就可以在它上面工作并迭代地测试它,而不必不断地重建。
例如:
cd ~/projects/node-redis # go into the package directorynpm link # creates global linkcd ~/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 projectnpm 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