Sha256: 29143774922a951a6cf2560186b583f45cf5a08ec8eae9a4ec4263987c6716ea

Contents?: true

Size: 1.96 KB

Versions: 29

Compression:

Stored size: 1.96 KB

Contents

const TerserPlugin = require('terser-webpack-plugin')
const CompressionPlugin = require('compression-webpack-plugin')
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
const safePostCssParser = require('postcss-safe-parser')
const Base = require('./base')

module.exports = class extends Base {
  constructor() {
    super()

    this.plugins.append(
      'Compression',
      new CompressionPlugin({
        filename: '[path].gz[query]',
        algorithm: 'gzip',
        test: /\.(js|css|html|json|ico|svg|eot|otf|ttf|map)$/
      })
    )

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

    this.plugins.append(
      'OptimizeCSSAssets',
      new OptimizeCSSAssetsPlugin({
        parser: safePostCssParser,
        map: {
          inline: false,
          annotation: true
        }
      })
    )

    this.config.merge({
      devtool: 'source-map',
      stats: 'normal',
      bail: true,
      optimization: {
        minimizer: [
          new TerserPlugin({
            parallel: Number.parseInt(process.env.WEBPACKER_PARALLEL, 10) || true,
            cache: true,
            sourceMap: 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
              }
            }
          })
        ]
      }
    })
  }
}

Version data entries

29 entries across 29 versions & 7 rubygems

Version Path
cm-admin-1.5.22 vendor/bundle/ruby/3.3.0/gems/webpacker-5.4.4/package/environments/production.js
cm-admin-1.5.21 vendor/bundle/ruby/3.3.0/gems/webpacker-5.4.4/package/environments/production.js
cm-admin-1.5.20 vendor/bundle/ruby/3.3.0/gems/webpacker-5.4.4/package/environments/production.js
jetpacker-0.7.0 package/environments/production.js
webpacker-5.4.4 package/environments/production.js
jetpacker-0.6.0 package/environments/production.js
disco_app-0.16.1 test/dummy/node_modules/@rails/webpacker/package/environments/production.js
disco_app-0.15.2 test/dummy/node_modules/@rails/webpacker/package/environments/production.js
disco_app-0.18.4 test/dummy/node_modules/@rails/webpacker/package/environments/production.js
disco_app-0.18.1 test/dummy/node_modules/@rails/webpacker/package/environments/production.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/@rails/webpacker/package/environments/production.js
disco_app-0.14.0 test/dummy/node_modules/@rails/webpacker/package/environments/production.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/@rails/webpacker/package/environments/production.js
webpacker-5.4.3 package/environments/production.js
webpacker-5.4.2 package/environments/production.js
webpacker-5.4.1 package/environments/production.js
webpacker-5.4.0 package/environments/production.js
webpacker-5.3.0 package/environments/production.js
webpacker-5.2.2 package/environments/production.js
tang-0.2.1 spec/tang_app/node_modules/@rails/webpacker/package/environments/production.js