覆盖npm包依赖项

时间:2018-05-22 18:18:22

标签: javascript npm webpack package.json

我读到了这个:How do I override nested NPM dependency versions?

不幸的是,它并没有解决我的问题。

我正在尝试将包更改为使用特定依赖项来使用该依赖项的其他版本。

它是否应该在包中内置它应该使用的依赖版本,还是可以更改它?

在我的具体情况下,我正在尝试更改css-loadercssnano@3.10.0最新)的默认依赖关系,而不是依赖于cssnano@4.0.0-rc.2(< EM>下)。

从上面链接的第二个答案中,用户 trickpatty 注意到:

  

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

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

2 个答案:

答案 0 :(得分:-1)

package.json 中,您可以添加resolutions并提供所使用的依赖路径。这是我的项目中的示例:

{
  "resolutions": {
    "helmet/helmet-csp": "2.9.1",
    "jest/**/handlebars": "4.5.3"
  }
}

答案 1 :(得分:-2)

该线程有点陈旧,也许已经解决了,但是也许有人遇到了相同的问题。

我认为,您不应更改依赖项的依赖项版本。每个项目的开发,测试和发布都要考虑其声明的依赖版本。您可以破坏或更改外部更改其依赖关系的软件包的行为。

相反,请考虑制作项目的分支(css-loader),更改依赖项版本,自己进行测试,并使用分支。您还可以向项目维护者打开拉取请求(如果您认为更改将使社区受益)或发布您的版本(遵守许可政策)。