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

问题描述 投票:0回答:4

我有两个版本的软件包,例如

@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?

node.js npm yarnpkg dependency-management
4个回答
0
投票

您可以使用自定义别名安装

npm i custom-name:@mycompany/[email protected]

您可以将

custom-name
更改为您想要使用的任何有效包名称。

之后就可以用这个别名导入包了。例如:

require("custom-name")
/
import * from "custom-name"


0
投票

您可以为每个包显式设置依赖关系,它们将被处理。

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 相当于纱线分辨率?


0
投票

要在 Node.js 项目中安装同一包的多个版本,可以使用 npm 或 YARN 以不同名称安装不同版本的包。以下是实现这一目标的方法:

使用npm:

npm i <your-alias>@npm:<package-name>@<version>

例如,如果您想安装不同版本的

got
模块:

npm i got-cjs@npm:got@11
npm i got-esm@npm:got@12

在你的 package.json 中,它将如下所示:

"dependencies": {
"got-esm": "npm:got@^12.0.0",
"got-cjs": "npm:got@^11.0.0"
}

-1
投票

对于 npm install 特定版本,请使用 npm install [package-name]@[version-number]

© www.soinside.com 2019 - 2024. All rights reserved.