Javascript 覆盖npm包依赖项

Javascript 覆盖npm包依赖项,javascript,npm,webpack,package.json,Javascript,Npm,Webpack,Package.json,我读到: 不幸的是,这并不能解决我的问题 我正在尝试将包从使用特定依赖项更改为使用该依赖项的另一个版本 它是内置在一个包中,应该使用哪个版本的依赖项,还是可以更改它 具体来说,我正在尝试更改css加载程序对的默认依赖关系cssnano@3.10.0(最新版本)改为依赖于cssnano@4.0.0-rc.2(下一步) 从上面链接中的第二个答案中,用户trickpatty注意到: 只要您运行npm i而不是编辑您的 package-lock.json并将子依赖项添加到“dependencies” 在

我读到:

不幸的是,这并不能解决我的问题

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

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

具体来说,我正在尝试更改
css加载程序对
的默认依赖关系cssnano@3.10.0
(最新版本)改为依赖于
cssnano@4.0.0-rc.2(下一步)

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

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


包括
cssnano@4.0.0-package.json中的rc.2
的devdependency对
css加载程序
没有任何作用。它仍然使用另一个(默认)版本的
cssnano

此线程有点旧,可能已经解决了,但可能有人有同样的问题

在我看来,您不应该更改依赖项的依赖项版本。每个项目的开发、测试和发布都考虑了它们声明的依赖关系版本。您可以在外部更改包的依赖项,从而中断或更改包的行为

相反,在制作项目的fork(css加载器)时,考虑更改依赖项版本,自己测试,并使用fork。您还可以向项目维护人员打开拉取请求(如果您认为该更改将有益于社区)或发布您的版本(遵守许可政策)。

在package.json中,您可以添加
解析
并给出使用的依赖路径。这是我的项目中的示例:

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

“它是否内置在一个包中,它应该使用哪个版本的依赖项”@Phil如果你运行
npm list cssnano
,你会看到安装了两个版本的cssnano,但是css加载程序确实仍然依赖于较低的版本(它显示为“子文件夹”)@Phil“给定npm的扁平目录结构”-嗯,众所周知,NPM具有高度嵌套的目录结构,每个包都可以安装多个版本。“你在想别的吗?”马格纳斯·菲尔完全错了。每个包都使用其嵌套的依赖项first@StopHarmingMonica我只是想看看我当时看到的。我可以发誓一切都在
node\u模块的顶层。我也很高兴在这里错了。很高兴当时我没有提供答案:)。编辑:很确定这就是我看到的~,显然我很困惑这是纱线的一个特征,而不是npm