1. 前言
在开发npm package的时候,我们需要对自己开发的包进行本地安装和调试。我们在开发一个包的时候是不希望功能还没做完就发布到npm仓库的,这个时候就需要用到 npm link,也叫软链接。
软链接简单说就是为开发的模块(待发布的npm包)创造一个全局链接,在主项目里链接这个依赖的模块,进行调试。
npm link是一个用于开发时直接将本地包链接为依赖项的一个命令行工具。通常用于发布npm包之前本地测试使用。
2. 使用软连接
假设我们正在开发了一个npm包叫toolbox,主体功能已经完成,现在需要在demo项目中进行安装和测试。我们需要先给这个包创建一个全局链接,然后在demo项目中使用软链接安装这个toolbox包,接下来toolbox对任何改动都会实时反映到demo项目对toolbox的引用上。
2.1 创建包全局链接
// 进入到toolbox包目录下
cd toolbox
// 创建全局链接
npm link
2.2 本地安装包
// 接下来切换到demo项目目录下,安装toolbox即可
cd demo
// 安装toolbox
npm link toolbox
Tips: 这里的toolbox一定要对应npm包package.json里面的name字段
3. 删除软链接
当我们完成了npm的开发调试后,我们需要删除掉临时设置的软链接。
// 解除demo项目中引用的软链接
cd demo
npm unlink toolbox
// 删除toolbox的全局软链接
cd toolbox
npm unlink
// 强制解除全局链接
npm rm --global packageName
// 查看所有全局链接
npm ls --global --depth 0
4. 存在的问题
软链接npm link本身是存在一些问题的:
- 多个Node.js版本同时使用容易出错
- link失败不会报错并且会回退到直接从npm仓库进行安装
- 会有预期之外的二进制可执行文件安装
- 不符合预期的软链接删除
所以在开发中通常使用npx link替代npm link命令。npx link不会全局安装链接的包或二进制执行文件,并且也不会删除以前的软链接,可以在不同版本的Node.js中使用。当不能解析包路径时,也会有一个执行失败报错。
npx link <package-path>
5. 总结
软链接npm link的好处是显而易见的,他方便了我们开发包时的调试工作。但它本身也存在一些问题,所以我们在开发中尽量使用npx link替代npm link。