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-loader
和style-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 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
中完成的话。
谢谢!
答案 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