如何制作 npm 安装包并忽略一个(或所有)对等依赖项?

Chr*_*oba 23 npm npm-install

我已经vuex@4.0.2安装了。我想安装vuex-module-decorators@latest,它的 peerDependency 为vuex 3(不是>=3)。我有一种感觉,这会很好地配合vuex 4。有没有办法让我告诉 npm 安装这个新包,而不会因无法解决对等依赖关系而崩溃(因为 4 != 3)?或者我是否需要创建自己的分支vuex-module-decorators并进行更新package.json以允许vuex >=3

Tro*_*ott 27

快速但可能不安全:使用--legacy-peer-deps通常允许您在不满足对等依赖关系要求的情况下安装软件包。(这是默认使用npm@6,所以如果您遇到问题,我假设您正在使用npm@7或稍后使用。)如果这不起作用,--force将安装而不考虑对等依赖性。

需要稍微多一点努力,但更安全/手术:使用npm 覆盖。这些是在 npm 8.x 中引入的。


Nic*_*rdy 6

您应该使用overrides现代版本的 npm,因为--legacy-peer-deps它不太安全,并且可能会消除您可能想要修复的其他遗留对等依赖项:

"overrides": {
  "vuex-module-decorators": {
    "vuex": "$vuex",
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 这里 `"$vuex"` 的意思是“从“依赖项”中获取 vuex 包的版本规范([_overrides 也可以通过在您希望版本的包的名称前面加上前缀来定义为对直接依赖项的规范的引用)与 $._](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides)) 匹配 (4认同)