Sha256: e0aef696f9d574c8a7e825a1277e4191c8859a03dcb568a8eb2f9a7b613fbd0c

Contents?: true

Size: 1.86 KB

Versions: 2

Compression:

Stored size: 1.86 KB

Contents

/* eslint global-require: 0 */
/* eslint import/no-dynamic-require: 0 */

const { merge } = require('webpack-merge')
const CompressionPlugin = require('compression-webpack-plugin')
const TerserPlugin = require('terser-webpack-plugin')
const baseConfig = require('./base')
const { moduleExists } = require('../utils/helpers')

const getPlugins = () => {
  let compressionPlugin = new CompressionPlugin({
    filename: '[path].gz[query]',
    algorithm: 'gzip',
    test: /\.(js|css|html|json|ico|svg|eot|otf|ttf|map)$/
  })

  if ('brotli' in process.versions) {
    compressionPlugin = new CompressionPlugin({
      filename: '[path].br[query]',
      algorithm: 'brotliCompress',
      test: /\.(js|css|html|json|ico|svg|eot|otf|ttf|map)$/
    })
  }

  return [compressionPlugin]
}

const productionConfig = {
  devtool: 'source-map',
  stats: 'normal',
  bail: true,
  plugins: getPlugins(),
  optimization: {
    minimizer: [
      () => {
        if (
          moduleExists('css-loader') &&
          moduleExists('css-minimizer-webpack-plugin')
        ) {
          const CssMinimizerPlugin = require('css-minimizer-webpack-plugin')
          return new CssMinimizerPlugin({ sourceMap: true })
        }

        return false
      },

      new TerserPlugin({
        parallel: Number.parseInt(process.env.WEBPACKER_PARALLEL, 10) || true,
        terserOptions: {
          parse: {
            // Let terser parse ecma 8 code but always output
            // ES5 compliant code for older browsers
            ecma: 8
          },
          compress: {
            ecma: 5,
            warnings: false,
            comparisons: false
          },
          mangle: { safari10: true },
          output: {
            ecma: 5,
            comments: false,
            ascii_only: true
          }
        }
      })
    ].filter(Boolean)
  }
}

module.exports = merge(baseConfig, productionConfig)

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
webpacker-6.0.0.beta.1 package/environments/production.js
webpacker-6.0.0.beta package/environments/production.js