如果我们想自己开发一个依赖包,在多个项目中使用它,如果直接发布到官网上固然可以,但如果修改则会非常麻烦,而且不利于在多个项目中使用。
npm link命令可以帮助我们实现这个事情
假如我们开发一个名为allenModule95的依赖包。
首先需要在该依赖包下运行npm init
命令,并编写index.js文件
module.exports = {
name: "allenModule95Name",
sayHello: function(){
console.log("hello allenModule95");
}
}
然后在myProject目录下编写demo.js文件
var myModule = require("allenModule95");
console.log(myModule.name);
myModule.sayHello();
直接运行会报错,allenModule95模块找不到。
因为此时的require搜寻目录没有包含此模块。
切换到allenModule95目录下,并执行npm link
命令,这个命令的作用就是在全局环境下,生成一个符号链接文件,该文件的名字就是package.json文件中指定的模块名。同时我们对此模块的修改会实时反馈在全局目录下。
在切换到myProject目录下,将自定义的模块与此项目连接起来。执行npm link allenModule95
。然后就可以执行node demo
查看效果了:
如此,我们可以在任何目录下使用该模块,并且一处修改,处处改变,节省了同步依赖包的步骤。
如果想解除项目与模块的依赖则可以在项目目录下执行npm unlink allenModule95
即可。
如果想要从全局环境移除allenModule95模块链接,则可以在该模块目录下执行npm unlink allenModule95
即可。
更多参考:
http://javascript.ruanyifeng.com/nodejs/npm.html#toc18
https://www.youtube.com/watch?v=nKFe1lhGSk0