NPM:Link 对程序包别名的对等依赖

NPM: Link peer dependency to package alias

假设我有使用一些旧包的遗留代码库:

"mobx": "5.15.4",
"mobx-react": "6.1.8",

在开发一些新的实验性功能时,我想使用这些包的更新版本,但也必须让旧版本处于工作状态。所以,我正在为新版本的包添加别名,以便我可以将它们与旧版本一起使用:

"@new/mobx": "npm:mobx@^6.3.13"
"@new/mobx-react": "npm:mobx-react@^7.2.1"

但是 mobx-react 使用 mobx 作为对等依赖。显然,问题是 @new/mobx-react 正在观看旧的 mobx 版本,并且预期说应该有版本 6+ 的 mobx

是否有任何方法可以手动解决 @new/mobx-react 的对等依赖关系,以便它会监视 @new/mobx 而不仅仅是 mobx?或者,也许有一种方法可以以一种不会覆盖旧 mobx 版本的方式为 @new/mobx-react 隐式安装 peer deps?

你可以轻松做到这一点

set NODE_ENV=development

npm install mobx@5.15.4 --save
npm install mobx-react@6.1.8 --save
npm install @new/mobx@npm:mobx@^6.3.13 --save
npm install @new/mobx-react@npm:mobx-react@^7.2.1 --save

那么您必须手动为您的@new/mobx-react 安装依赖项,如下所示:

cd ./node_modules/@new/mobx-react
npm install --ignore-scripts

这将导致版本 6.3.14 的 mobx 在您的@new/mobx-react

的 node_modules 中

node.js(从 npm 版本 3 开始)首先尝试从包的内部 node_modules 加载依赖项,然后从项目的 node_modules 中查看:documentation