0

我正在将 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 插件将不胜感激。

4

3 回答 3

2

您需要更改要使用 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

于 2019-05-20T00:18:47.237 回答
1

我也遇到了 erb-loader 的问题。在此评论中找到了解决方案。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,
      },
    }
  }]
}
于 2019-10-25T03:43:32.447 回答
0

我想我可能遇到了与此类似的问题,Compiling never completes Rails 5.2, ERB and compile: true。我从我的项目中删除了 erb 加载器并RAILS_ENV=production rake assets:precompile完成了。我也不再收到有关块大小的警告。

于 2019-05-20T15:29:06.680 回答