NodeJS 使用npm/yarn安装同一个包的不同版本

afdcj2ne  于 2023-05-28  发布在  Node.js
关注(0)|答案(3)|浏览(311)

我有两个版本的软件包,例如:
@mycompany/mylob v2.0.0

@mycompany/mylib v3.0.0
版本3.0.0与版本2.0.0相比有了突破性的变化,但我们还没有能力将所有内容升级到3.0.0。
另一个开发人员升级了一个内部软件包,例如@mycompany/utils使用3.0.0版本,并且安装到我们的代码库中,因此现在我们在运行构建时遇到兼容性错误,因为@mycompany/utils需要3.0.0版本,但该存储库中的其余代码需要2.0.0版本。
有没有一种方法可以让我在yarn/npm中为@mycompany/utils安装@mycompany/mylib v3.0.0,并让其余代码引用v2.0.0?

2admgd59

2admgd591#

可以使用custom alias installs
npm i custom-name:@mycompany/mylib@3.0
您可以将custom-name更改为您想要使用的任何有效软件包名称。
之后,您可以使用此别名导入包。例如:
require("custom-name") / import * from "custom-name"

j2datikz

j2datikz2#

您可以为每个包显式地设置依赖项,它们将被处理。
package.json

{
  "name": "project",
  "version": "1.0.0",
  "dependencies": {
    "left-pad": "1.0.0",
    "c": "file:../c-1",
    "d2": "file:../d2-1"
  },
  "resolutions": {
    "d2/left-pad": "1.1.1",
    "c/**/left-pad": "^1.1.2"
  }
}

你的答案就在这里Yarn:
https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/?fbclid=IwAR2aiwN7w5D-YX7kwB4gUITx3VacAuh1qzhJO0q_jGYDm6HjxRe8079GxWA
至于NPM,似乎没有任何原生的解决方案。你可以在这里看到这个答案:
npm equivalent of yarn resolutions?

qxgroojn

qxgroojn3#

npm安装特定版本,使用npm install [package-name]@[version-number]

相关问题