参考资料:
https://www.cnblogs.com/zhangzl419/p/15210835.html
1、什么时候使用npm link?
npm link用来在本地项目和本地npm包之间建立连接,可以在本地进行模块测试。
npm包在开发和迭代更新时,不适合直接发布到线上或者直接发布测试版本进行调试,会导致过程繁琐且版本号过多。
此时我们就可以使用npm link命令将包放在node安装目录下的node_modules文件中,这样的话我们就可以直接进行本地调试、开发,非常方便。
2、工作原理
npm link直接把包模拟成安装后的状态,就像我们平时install过一样,直接使用。
需要注意的时候:
npm link在目录中生成的并不是真实的文件,而是一个快捷方式,所以在我们修改包的代码逻辑时,都会实时更新(使用正在开发包的地方可以直接更新到最新逻辑,方便开发)
该快捷方式指向当前执行npm link的目录
如果开发的是node包,则执行的命令名和真实执行的文件入口,会根据项目package.json里的bin的配置来获取
3、npm link 使用
3.1: 项目和npm包在相同目录下(相同的文件下)
此时可以使用相对路径,只需要link一次就好了
目录例如:
- module
- useNpmModule
- npmModule
cd /module // 进入开发的项目 npm link ../npmModule // 软连接到使用npm包的目录
npm link会在module项目中的node_modules目录下创建一个npmModule的软链接(类似windows的快捷方式),链接着module下的npmModule。
当npmModule包开发调试时(useNpmModule中使用),可以在useNpmModule得到实时更新的npmModule
3.2:项目和npm包不在同一目录(不同的文件中)
useNpmModule:使用npm包的项目文件名
npmModule: npm包文件名
第一步:先进入npmModule文件,然后执行npm link,对提示一个挂载的npm包名(也可在npm包中package.json文件的name属性,找到npm的名称)
1、 cd /npmModule 2、 npm link
第二步:进入useNpmModule文件,然后执行npm link npm包名(通过包名建立连接)
1、cd useNpmModule 2、npm link npm包名
工作原理详情:
项目和npm包不在同一个目录下,需要先把npm包连接到全局,然后再把全局链接项目
此时指定的 npm包名,在useNpmModule项目的node_module下创建了一个 npm包 的软链接,它链接到/user/local/lib/node_modules/npm包 (可以理解为链接到node安装目录下的node_modules文件中),然后再由/user/local/lib/node_modules/npm包下的软链接,链接到具体的代码目录下(npm包)
3.3: 编写node模块
如果是一个单独的项目,不和其他的项目在同一个目录下
为了让其他目录下的项目,使用node模块,需要将node模块link到全局
npm link前,需要在node模块的package.json里,配置bin字段
"bin": { "自定义的命令": "需要执行的脚本文件" }
在node模块目录下,执行npm link(全局link 不需要添加任何参数)
1、cd 项目路径 2、npm link
4、卸载npm link 链接
4.1、解除项目与模块的链接
1、 cd /useNpmModule // 进入使用npm包的项目文件 2、 tnpm unlink npm包名
4.2、解除npm包的全局链接
1、 cd /npmModule // 进入npm包文件 2、 tnpm link npm包名标签:npm,node,npmModule,链接,link,实操,目录 From: https://www.cnblogs.com/webljl/p/18136060