Webpacker v3.1.0 Release Notes

Release Date: 2017-12-11 // over 6 years ago
  • โž• Added (npm module)

    • ๐Ÿ”ฆ Expose base config from environment
    environment.config.set('resolve.extensions', ['.foo', '.bar'])
    environment.config.set('output.filename', '[name].js')
    environment.config.delete('output.chunkFilename')
    environment.config.get('resolve')
    environment.config.merge({
      output: {
        filename: '[name].js'
      }
    })
    
    • ๐Ÿ”ฆ Expose new API's for loaders and plugins to insert at position
    const jsonLoader = {
      test: /\.json$/,
      exclude: /node_modules/,
      loader: 'json-loader'
    }
    
    environment.loaders.append('json', jsonLoader)
    environment.loaders.prepend('json', jsonLoader)
    environment.loaders.insert('json', jsonLoader, { after: 'style' })
    environment.loaders.insert('json', jsonLoader, { before: 'babel' })
    
    // Update a plugin
    const manifestPlugin = environment.plugins.get('Manifest')
    manifestPlugin.opts.writeToFileEmit = false
    
    // Update coffee loader to use coffeescript 2
    const babelLoader = environment.loaders.get('babel')
    environment.loaders.insert(
      'coffee',
      {
        test: /\.coffee(\.erb)?$/,
        use: babelLoader.use.concat(['coffee-loader'])
      },
      { before: 'json' }
    )
    
    • ๐Ÿ”ฆ Expose resolve.modules paths like loaders and plugins
    environment.resolvedModules.append('vendor', 'vendor')
    
    • ๐Ÿ’… Enable sourcemaps in style and css loader

    • ๐Ÿ’… Separate css and sass loader for easier configuration. style loader is now css loader, which resolves .css files and sass loader resolves .scss and .sass files.

    // Enable css modules with sass loader
    const sassLoader = environment.loaders.get('sass')
    const cssLoader = sassLoader.use.find(
      (loader) => loader.loader === 'css-loader'
    )
    
    cssLoader.options = Object.assign({}, cssLoader.options, {
      modules: true,
      localIdentName: '[path][name]__[local]--[hash:base64:5]'
    })
    
    • ๐Ÿ”ฆ Expose rest of configurable dev server options from webpacker.yml
    quiet: false
    headers:
      'Access-Control-Allow-Origin': '*'
    watch_options:
      ignored: /node_modules/
    
    • pretty option to disable/enable color and progress output when running dev server
    dev_server:
      pretty: false
    
    • Enforce deterministic loader order in desc order, starts processing from top to bottom

    • ๐Ÿ”Œ Enforce the entire path of all required modules match the exact case of the actual path on disk using case sensitive paths plugin.

    • โž• Add url loader to process and embed smaller static files

    โœ‚ Removed

    • ๐Ÿš… resolve url loader #1042

    โž• Added (Gem)

    • ๐Ÿ‘ Allow skipping webpacker compile using an env variable
    WEBPACKER_PRECOMPILE=no|false|n|f
    WEBPACKER_PRECOMPILE=false bundle exec rails assets:precompile
    
    • Use WEBPACKER_ASSET_HOST instead of ASSET_HOST for CDN

    • ๐Ÿฑ Alias webpacker:compile task to assets:precompile if is not defined so it works without sprockets