[英]Separate CSS files using create-react-app code-splitting without ejecting
由于我的应用程序变得太大而无法执行此操作,因此我使用react-loadable
来利用代码分割。 这一切都有效,但CSS嵌入在这些新的JavaScript块中,然后看似动态地加载到页面中。 我希望每个块中的CSS都在单独的文件中,而不是在JS文件本身内。 我可以在不自行弹出和修改Webpack配置的情况下完成此操作吗? 如果可能的话,我真的想避免这种情况。
编辑:我刚刚看到实际的Webpack配置正在做什么。 以下评论确认了我遇到的问题,但没有提供解决方案:
注意最后一句:
但是,如果使用代码拆分,任何异步包仍然会在异步代码中使用“样式”加载器,因此来自它们的CSS不会出现在主CSS文件中。
我不相信 , create-react-app
的目的是为项目的构建配置提供有用的默认值,以及为应用程序的项目结构提供基本模板 。 其主要思想是create-react-app
将让您专注于构建您的应用程序,而不是担心设立各种构建配置,如Webpack
捆绑资产, babel
为transpiling JavaScript代码,掉毛等.. create-react-app
对于大多数Web应用create-react-app
是一个很棒的“千篇一律”解决方案,但它无法解决边缘情况,例如由于应用程序规模的增长而导致的自定义性能需求。 另一个类比是,它类似于制定或遵循饮食计划:您知道基本的复合运动,对于给定的一组/代表范围,以及在您的常量营养素需求中吃健康食品,将帮助您实现最佳体质可能....但是为了准备好舞台,这是5-10%的个人定制,这会使你赢得胜利的机会。 这就是为什么演员/女演员/运动员等等都有营养师,厨师和力量教练,这些教练可以个性化这个基本模板,以便在个人层面上取得成功。 回到你的问题,从它的声音,你需要修改MiniCssExtractPlugin
从内插件设置webpack.config.js
到大块的CSS
适当纳入单独的文件。 也许你可以尝试以下方法:
现在您可以尝试两种选择:
webpack.config.js
,即使您使用create-react-app
。 由于此配置仅封装在react-scripts
节点模块中 。 所以也许你可以尝试直接编辑这个文件而不弹出: <base_path>/node_modules/react-scripts/config/webpack.config.js
虽然你需要小心不要破坏现有的配置设置。 至少这种方式如果你破坏了这个文件,你总是可以删除并重新安装react-scripts
并返回初始配置。 这也允许您在“半安全”沙盒环境中使用自定义。 create-react-app
提供的不是魔法,而只是为构建配置创建有用的默认值。 通过弹出你仍然可以像以前一样使用该应用程序,但现在你正在自己前进,如果你没有使用create-react-app
那么无论如何都是如此。 希望这对您有所帮助,祝您好运! 如果你找到一个优雅的解决方案然后请与他人分享,我希望被证明是错误的:)
我想在这一点上我可以确认你用来创建项目的create-react-app
版本是个问题。 这不是react-loadable
的问题,它是动态的import()
语法,并且在ExtractTextPlugin
没有从该语法中找到块的支持。
我使用新的create-react-app
在我的机器上进行了测试。 您可以看到在动态加载时创建了包。
以下是extract-text-webpack-plugin
问题的链接。 此功能不会添加到此插件中(请参阅上次评论): https : //github.com/webpack-contrib/extract-text-webpack-plugin/issues/455
所以你现在需要做的是找到一种切换到MiniCssExtractPlugin
,如果你想提取那个CSS,我认为这是你唯一的选择。
编辑:面向未来的Google员工。 MiniCssExtractPlugin不支持Webpack 3,您需要完全升级到4。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.