首页 > 解决方案 > 覆盖 npm 包依赖

问题描述

我读到:如何覆盖嵌套的 NPM 依赖版本?

不幸的是,它不能解决我的问题。

我正在尝试将包从使用特定依赖项更改为使用该依赖项的另一个版本。

它是否内置在包中,它应该使用哪个版本的依赖项,或者是否可以更改它?

特别是在我的情况下,我正在尝试将对( latestcss-loader )的默认依赖更改为依赖于( next )。cssnano@3.10.0cssnano@4.0.0-rc.2

从上面链接的第二个答案中,用户trickpatty指出:

这将在您运行 npm i 时删除,而不是编辑您的 package-lock.json 并将子依赖项添加到那里的“依赖项”,将子依赖项添加到您的 package.json “依赖项”部分

包含cssnano@4.0.0-rc.2在 package.json 的 devDependencies 中对css-loader. 它仍然使用其他(默认)版本的cssnano.

标签: javascriptnpmwebpackpackage.json

解决方案


NPM 8 引入了“覆盖”,它允许你覆盖直接依赖的特定传递依赖。对于您的用例,您可以在 package.json 中声明如下内容。

{
  "overrides": {
    "css-loader": {
      "cssnano": "4.0.0-rc.2"
    }
  }
}

更多细节@ https://docs.npmjs.com/cli/v8/configuring-npm/package-json#overrides


推荐阅读