假设我们正在开发了一个npm
包叫yg-js-utils,以下简称[A项目]
,主体功能已经完成,现在需要在leno简称[B项目]中进行安装和测试。
我们需要先A=> npm link (测试包开启全局软连接),然后B=> npm link yg-js-utils (连接到测试包)
然后 npm run serve项目跑起来后 在A中修改 B中实时反馈测试结果;
B项目运行后故意在A中 故意写一个不存在的方法,看B是否报错?
可以看到B已经链接到A项目待测试发布的NPM包了;
当我们完成了npm
的开发调试后,我们需要删除掉临时设置的软链接。
// 进入到yg-js-utils包目录下
cd yg-js-utils
// 创建全局链接
npm link
// 接下来切换到demo项目目录下,安装toolbox即可
cd leno
// 安装yg-js-utils
npm link yg-js-utils
// 解除leno项目中引用的软链接
cd leno
npm unlink yg-js-utils
// 删除yg-js-utils的全局软链接
cd yg-js-utils
npm unlink
// 强制解除全局链接 npm rm --global packageName
npm rm --global yg-js-utils
// 查看所有全局链接
npm ls --global --depth 0
npm包如何删除?
运行 npm unpublish 包名 --force 命令,即可从 npm 删除已发布的包。
存在的问题
软链接npm link
本身是存在一些问题的:
- 多个Node.js版本同时使用容易出错
- link失败不会报错并且会回退到直接从npm仓库进行安装
- 会有预期之外的二进制可执行文件安装
- 不符合预期的软链接删除
所以在开发中通常使用npx link
替代npm link
命令。npx link
不会全局安装链接的包或二进制执行文件,并且也不会删除以前的软链接,可以在不同版本的Node.js
中使用。当不能解析包路径时,也会有一个执行失败报错。