当想将大部分共用功能抽离成一个包进行管理时,就会想起要是多个项目依赖我这个包,但是我要弃用某一个功能,然后就会影响其他人的使用,当然这种情况还可以不升级包版本来解决。但要是现在版本中有一个新功能又不得不用的时候呢?如何在 NPM 中安装同一包的多个版本?
其实在 npm 6.9.0 就添加了 package aliases 功能,利用包别名的功能就能解决这样冲突问题。
比如现在我项目中用到了 axios 这个包,假设 axios v1.4.0 版本中有个功能在 axios v1.5.0 中被删除了,但是 axios v1.5.0 中有个 bug 修复了我又同时期望更新到这个修复。那么我就可以利用包别名安装方式同时安装 v1.4.0 和 v1.5.0 版本。
npm i axios4@npm:axios@1.4.0 axios5@npm:axios@1.5.0
安装后在 package.json 中就能看到
"dependencies": {
"axios4": "npm:axios@^1.4.0",
"axios5": "npm:axios@^1.5.0"
}
这样在代码中分别导入 axios4 和 axios5 就能分别使用两个版本的包了
import { Axios } from 'axios4';
import { Axios as Axios5 } from 'axios5';
参考链接: https://github.com/npm/rfcs/blob/main/implemented/0001-package-aliases.md