使用npm命令,直接离线引入本地工程模块,不需要install
(不用上传仓库,使本地项目可以直接依赖另一个项目)
Symlink(符号链接)一个package文件夹。
概括
npm link (in package dir) npm link [<@scope>/]<pkg>[@<version>] alias: npm ln
描述
package 链接过程分为两步
首先、npm link将会在全局包{prefix}/lib/node_modules/下面创建一个指向命令执行的地方的符号链接。同时也会创建一个{prefix}/bin/{name}下面对应的bin包。
另一种情况下,npm link package-name 将会创建一个从global包指向当前文件夹node_modules/下对应的链接。
注意:package-name是依据package.json的name而非文件名称。
包名称可以选择以任意作用域为前缀。 详情请查看npm-scope。 作用域必须以@-symbol开头,后跟斜杠。
在npm publish创建tarballs时,会通过解析符号链接将被链接的包“快照”到其当前状态。
安装自己的东西很方便,所以很方便基于其迭代开发测试,不需要重新build。
例如:
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/。需要注意的是,link的是包的名称而非文件夹名称。
当然你也可以简化以上两步,如下
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
上面做了如下事情:首先创建了一个全局链接,然后讲该全局安装的target链接到自己项目里的node_modules文件夹。
注意这种简化的操作,后面是文件路径node-redis而不是package的名称redis
一个实际案例:
在本地开发一个hubot-sample的插件项目,
然后在hubot工程中,使用如下命令引入该插件:
npm link ../hubot-sample
如果链接的包是有作用域的,我们的命令就要包括作用域
npm link @zollty/privatepackage
link的官方原文:https://docs.npmjs.com/cli/link