【问题标题】:NPM: Link peer dependency to package aliasNPM:将对等依赖项链接到包别名
【发布时间】:2022-02-02 18:39:45
【问题描述】:

假设我有旧代码库与一些旧包一起使用:

"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?或者,也许有一种方法可以隐式地为@new/mobx-react 安装对等部门,并且不会覆盖旧的mobx 版本?

【问题讨论】:

  • 我一直在想同样的事情,但我认为我们需要一种将链接包中的依赖项更改为别名的方法;换句话说,如果我们有一个需要 package@2 的依赖项 #1 和需要 package@3 的依赖项 #2,即使我们创建别名,依赖项 #1 和 #2 都会查找 package@ 而不是别名。我认为我们能做的最好的事情就是分叉包,将依赖项更改为别名并改用分叉。这样我们应该能够使用我们的别名。希望这是有道理的!

标签: npm npm-install


【解决方案1】:

你可以轻松做到这一点

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-22
    • 2020-01-24
    • 2020-07-05
    • 2020-07-21
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    相关资源
    最近更新 更多