【发布时间】:2019-05-09 22:30:47
【问题描述】:
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 包,这些 包的 peerDependencies 中有 webpack@^4.0.0。
当我安装 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 指定为硬编码版本会很痛苦,因为每当他们更新react-scripts 包时,我都必须一直更新craco-less 库。或者,如果无法在 package.json 中完成,也许我可以编写一个脚本来自动执行这些更新。
谢谢!
【问题讨论】:
标签: node.js reactjs npm webpack dependencies