如何为我的create-react-app程序包解决webpack的“未满足对等项依赖”警告?

时间:2018-12-08 10:40:22

标签: node.js reactjs npm webpack dependencies

create-react-app(CRA)是一个命令行工具,可帮助您设置新的React应用程序。它创建一个包含package.json依赖项的react-scripts

react-scripts软件包具有webpack依赖性(当前为4.19.1版本。)

craco是一个易于配置create-react-app的库。

我已经发布了一个craco-less软件包,它是一个craco插件。这样可以轻松设置对create-react-app的较少支持。 craco-less依赖项包括css-loaderstyle-loader软件包,而这些软件包的webpack@^4.0.0中有peerDependencies

在安装craco-less软件包(yarn add craco-less)时,出现以下警告:

warning "craco-less > css-loader@1.0.1" has unmet peer dependency "webpack@^4.0.0".
warning "craco-less > less-loader@4.1.0" has unmet peer dependency "webpack@^2.0.0 || ^3.0.0 || ^4.0.0".

我尝试将其添加到我的package.json

"peerDependencies": {
  "webpack": "^4.0.0"
}

但这给了我一个额外的警告:

warning "craco-less > css-loader@1.0.1" has unmet peer dependency "webpack@^4.0.0".
warning "craco-less > less-loader@4.1.0" has unmet peer dependency "webpack@^2.0.0 || ^3.0.0 || ^4.0.0".
warning " > craco-less@1.2.2" has unmet peer dependency "webpack@^4.0.0".

我还尝试添加webpack作为显式依赖项,这种方法在90%的时间内都有效,但是有时会导致create-react-app崩溃,并出现in this GitHub issue描述的错误:

npm package crash

npm install似乎只有这种情况,yarn install却没有。)

我刚刚意识到发生此错误是因为react-scripts取决于特定的Webpack版本,并且我的软件包具有松散的依赖性(^4.0.0)。但是我本来希望react-scripts依赖项可以覆盖此宽松版本约束并安装4.19.1而不是最新版本(4.27.1)。我认为这就是为什么它与yarn一起工作而不与npm一起工作的原因,因为也许yarn具有更智能的依赖性解析。

我的图书馆对"react-scripts": "^2.1.1"有依赖性(灵活),所以我想知道是否有一种方法可以委派给他们的webpack依赖性,而不是安装最新版本?

4.19.1指定为硬编码版本会很痛苦,因为每当他们更新craco-less软件包时,我就必须一直更新react-scripts库。或者,也许我可以写一个脚本来自动完成这些更新,如果无法在package.json中完成的话。

谢谢!

2 个答案:

答案 0 :(得分:0)

同一问题。如果有一些开发者为此花了很多时间,我们最终将工作转移到了Yarn。詹金斯需要做一些调整:

构建环境:

Provide Node & npm bin/ folder to PATH

NodeJS Installation: 8.10 

版本> 8

带有以下内容的Pree Exe Shell:

curl -o- -L https://yarnpkg.com/install.sh | bash -s
export PATH=$HOME/.yarn/bin:$PATH

yarn install
yarn run build

答案 1 :(得分:0)

yarn upgrade webpack@^4.0.0

Reference