npm link的使用
简单使用
npm link在开发公共模块的时候很有用,当你本地开发一个公共模块时,又在自己的本地项目用到,原始的做法可能是,把公共模块,拷贝到本地项目的node_modules模块里,然后本地开发的同时,调试公共模块,这样子虽然简单但是低效。
npm的link命令提供了简单高效的办法,在公共模块目录下,执行npm link
命令,会在全局node_modules
目录下生成一个符号链接,指向本地公共模块的目录。然后在本地项目直接require进来即可,系统最后会找到全局目录下的公共模块。
例1-1
|
|
可执行脚本的开发
可执行脚本可以方便执行一些常用的命令,免去手动重复性的动作。
可执行脚本sayHello:
例1-2
|
|
然后修改sayHello文件的权限(读取r的权限等于4;写入w的权限等于2;执行x的权限等于1。7(4+2+1 | 读取+写入+执行))
|
|
执行上述命令,sayHello就可以执行了
|
|
这种形式,需要每次执行sayHello命令需要加上路径前缀。更合理的做法是使用bin。
在公共模块的package.json文件里加上如下代码
例1-3
|
|
name执行公共模块的名字,bin执行需要全局加入的可执行命令。bin的键,全局执行的命令名,键值执行全局命令的具体可执行文件,例如"hello": "./bin/sayHello"
表示当前目录下的bin目录,里面的sayHello可执行文件。
接下来,在公共模块的目录下,执行npm link命令
例1-4
|
|
可以看出hello的全局执行的命令名,映射到了/usr/local/lib/node_modules/testlink/sayHello
这个具体的可执行文件( 注意⚠️,全局node_modules下的testlink目录是个符号链接,但是读写效果和具体文件路径一样 )。然后/usr/local/lib/node_modules/testlink
全局的模块(符号链接),映射到了具体本地的/Users/[yourHomePath]/demo/testlink
公共模块开发目录。
接下来,执行sayHello可执行文件不需要加上路径前缀了,在任何目录下,执行
例1-5
|
|
现在比每次加目录前缀方便多了。
参考资料