【问题标题】:rails webpack compilation hangs in production at 78% [0] chunk asset optimization TerserPluginrails webpack 编译在生产中挂起 78% [0] 块资产优化 TerserPlugin
【发布时间】:2019-10-02 00:36:58
【问题描述】:
【问题讨论】:
标签:
ruby-on-rails
webpack
babeljs
webpacker
terser
【解决方案1】:
你需要在你想使用 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()
这假设您在 package.json 文件中添加了 babel-minify-webpack-plugin 作为依赖项。
如果您想尝试禁用 collapse_vars,就像选项 3 中的 linked article 指出的那样,您的配置文件应该类似于:
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()
这假设您在 package.json 文件中添加了 uglifyjs-webpack-plugin 作为依赖项。
【解决方案2】:
我也遇到了 erb-loader 的问题。在comment 中找到了解决方案。 erb-loader 和 spring 交互存在一些问题,导致冻结。
要修复它,只需添加
env: {
...process.env,
DISABLE_SPRING: 1,
}
到 erb-loader config(config/webpack/loaders/erb.js) 中的选项,所以整个配置如下:
module.exports = {
test: /\.erb$/,
enforce: 'pre',
exclude: /node_modules/,
use: [{
loader: 'rails-erb-loader',
options: {
runner: (/^win/.test(process.platform) ? 'ruby ' : '') + 'bin/rails runner',
env: {
...process.env,
DISABLE_SPRING: 1,
},
}
}]
}