reactjs - Webpack 4 + Material-UI:JSS 的缩小如何在生产模式下工作?
问题描述
我正在使用Webpack 4.10.2和Material-UI v1.1.0开发一个项目。MUI 文档正在讨论类名生成器,我对缩短类名的结果感到满意,但是在构建过程中有一些我不明白的东西,我可能缺少 Webpack 模块或插件(例如,我只是使用 babel-loader 并且没有插件)。我刚刚尝试了许多与UglifyJsPlugin的组合(通过 optimization.minimizer)compress和mangle但没有任何效果。
问题:
文档样式标签中注入的类名被缩短,但正文中对应的类不被缩短:
发展模式
在开发模式下构建我的项目时一切都很好,使用webpack -d
:
<style type="text/css" data-jss="" data-meta="LayoutNavBar">
.LayoutNavBar-flex-4 {
flex: 1;
}
</style>
在正文中,相应的类
<h2 class="LayoutNavBar-flex-4">Title</h2>
生产方式
当我在生产模式下构建时,样式被破坏了,我有带有缩短类名的内联样式(这很好):
<style type="text/css" data-jss="" data-meta="LayoutNavBar">
.jss4 {
flex: 1;
}
</style>
但在正文中,CSS 类仍然使用它们的长名称:
<h2 class="LayoutNavBar-flex-4">Title</h2>
而不是:
<h2 class="jss4">Title</h2>
我缺少什么让它工作?谢谢
解决方案
我有同样的问题。在我的情况下,我node_modules
从服务器包中排除,因此 Webpack 不会process.env.NODE_ENV
在模块文件中替换,而在我的客户端包中node_modules
,它包含在哪里。因此,要在服务器上缩小 CSS,您需要包含node_modules
在包中,或者NODE_ENV
在运行服务器包的命令行会话中设置环境变量。
我能找到的最好的(与平台无关的)方法是运行“npm start --production”,或者将其作为脚本添加到package.json
. 这将自动将NODE_ENV
脚本运行的节点会话的环境变量设置为production
.
推荐阅读
- ruby - Ruby:带有编码回退选项的 CSV.open
- sql - sql 喜欢与另一个表
- polymer - 如何将 Polymer3 应用程序部署到 GH Pages?
- python - 字符串中的 Python 子字符串
- excel - VBA(EXCEL)字符串被剪切(不打印所有字符串)
- opencart - 如何在下拉菜单 Opencart 中使所有子类别可扩展?
- amazon-web-services - 为 ELB 和 EC2 设置 HTTPS
- javascript - 使用 JS 插件对表进行排序会导致错误
- docker - 是否可以将其他 PTY 连接到 docker 容器?
- reactjs - 作为 npm 包的子应用程序不会重新呈现