首页 > 解决方案 > rails webpack 编译在生产中挂起 78% [0] 块资产优化 TerserPlugin

问题描述

我正在将 Rails 5 与 webpack 一起使用,尝试为生产进行编译,因为资产没有出现在生产中。

如果我尝试NODE_ENV=production rake webpacker:compile,那么它会挂起Compiling...

在阅读生产中的编译失败并且不够详细之后,我尝试了NODE_ENV=production bin/webpack --progress --config config/webpack/production.js。它挂在78% [0] chunk asset optimization TerserPlugin

我读了这个https://fontawesome.com/how-to-use/with-the-api/other/tree-shaking#issues,但我不确定如何切换 Rails webpack 以使用 Babel Minify 而不是 Terser。

任何帮助更改 Rails 以使用Babel Minify 插件将不胜感激。

标签: ruby-on-railswebpackbabeljswebpackerterser

解决方案


您需要更改要使用 Babel Minify 的环境。

如果是用于生产环境,您的config/webpack/production.js需求类似于:

process.env.NODE_ENV = process.env.NODE_ENV || 'production'
const environment = require('./environment')
const BabelMinifyPlugin = require('babel-minify-webpack-plugin')

environment.config.optimization.minimizer = [ new BabelMinifyPlugin() ]

module.exports = environment.toWebpackConfig()

这假设您在文件中添加babel-minify-webpack-plugin了依赖项。package.json

如果您想尝试禁用链接文章在选项 3 中指出的那样,您的配置文件应类似于collapse_vars

process.env.NODE_ENV = process.env.NODE_ENV || 'production'
const environment = require('./environment')
const UglifyJSPlugin = require("uglifyjs-webpack-plugin")

environment.config.optimization.minimizer = [
  new UglifyJSPlugin({
    uglifyOptions: {
      collapse_vars: false
    }
  })
]

module.exports = environment.toWebpackConfig()

这假设您在文件中添加uglifyjs-webpack-plugin了依赖项。package.json


推荐阅读