Node系列:我认识了npm link

1,069 阅读3分钟

最近在卷的时候,同事教会了调试代码,使用npm link。这是我以前根本没有接触到的新知识,哈哈哈。

npm link的具体作用就是在本地直接调试第三方模块的源码。

业务场景:

当封装了一个第三方库,发布到npm的镜像上,在项目中就可以直接安装使用。但是在使用的过程中,如果发现了代码存在bug,那么就需要维护。

第一种方式:就是凭着感觉改,然后重新发布到npm的镜像上,再来确定bug是否修复完成(相对的比较麻烦)。

第二种方式:就是在修复的过程中,直接在本地调试,调试好了,再发布到npm的镜像上(比较推荐)。

那么npm link到底怎么使用呢?

npm link代码演示

创建两个项目,第三库(library) 和 测试项目(test_project)。

04_1.png

第一步:创建第三方库library

首先,在library项目下使用 npm init -y创建一个package.json文件,其中版本号(version)为(1.0.0),这个在后面需要被依赖。

然后创建一个入口文件index.js, 代码如下:

 // 简单写一个打印函数,然后导出即可
 ​
 const log = (str) => console.log(str);
 module.exports = log;

第二步:创建本地的测试项目test_library

步骤跟上面一样,先创建一个package.json文件,然后再创建一个入口文件index.js

index.js的代码如下:

 const log = require('library')
 log('copyer')

进入项目test_project文件夹下,执行 node index.js命令,结果不言而喻,肯定会报错的。

04_2.png 报错的原因:就是找不到第三依赖 library

那么这时候,npm link的作用就开始了。

第三步:npm link 开始表演

在 library 项目下,执行 npm link 命令,把library项目添加到全局的node_modules文件夹下,建立一个软链接。

在 test_project 项目下,执行 npm link library 命令, 就可以从全局的 node_modules 读取刚刚建立链接的library库。此时,我们就可以正确执行node index.js了。

当重新修改 library 的源码后,重新运行项目,就可以查看最新的效果,是不是很快捷方便啊。

当调试好之后就可以把 library 发布到镜像上去,同时进行解绑操作npm unlink library,最后通过 npm install library 的方式进行使用。

小结

 npm link:        // 把第三方模块添加到全局的node_modules,供其他项目使用(执行路径:第三方库)
 npm link xxx:    // 把第三方模块xxx添加到本地项目中,进行调试(执行路径:本地项目)
 npm unlink xxx:  // 解除本地项目与第三方模块的关联(执行路径:本地项目)
 npm unlink:      // 解除本地项目与所有的第三方模块的关联(执行路径:本地项目)

认识yalc

在了解 npm link 的过程中,又知道了 npm link的代替品: yalc

yalc 的方案是在本地模拟一个 npm 仓库,使用真实的 npm package 代替各种 link ,除了不会发布到真实远端仓库外,都和真实发包无异。

安装

 npm install yalc -g   // 全局安装

使用

针对上面的示例:

 // pwd: library
 yalc publich   // 代替了 npm link 操作(发布)
 // pwd:test_project
 yalc add library  // 代替了 npm link library 操作(关联)

执行 node index.js, 成功运行。

如果修改了第三方库的源码,那么就需要重新发布

 // pwd: library
 yalc publish   // 重新发布
 ​
 // pwd: test_project
 yalc update    // 本地项目更新
 yalc update [my-package]  // 具体某一个包

执行 node index.js, 成功运行,修改的代码也是起效的。

移除依赖

 yalc remove [my-package]  // 具体的某一个包 
 ​
 yalc remove --all // 移除所有依赖并还原

查看仓库信息

 yalc installations show