webpacker-pure-config
Version:
Pure webpack way config for webpacker and rails.
47 lines (44 loc) • 1.3 kB
JavaScript
const { resolve, relative, dirname, basename, extname } = require('path')
const { generateEntry } = require('webpacker-entry')
const webpack = require('webpack')
const ManifestPlugin = require('webpack-manifest-plugin')
const TerserWebpackPlugin = require('terser-webpack-plugin')
module.exports = function generate(options = {}) {
const baseDir = options.baseDir || resolve('./app/javascript/packs')
const extensions = options.extensions || ['.js', '.jsx']
const rules = options.rules || [
{
test: /.jsx?$/,
exclude: /node_modules/,
use: ['babel-loader']
}
]
return {
mode: 'development',
devtool: 'cheap-module-source-map',
entry: generateEntry(baseDir, extensions),
output: {
filename: '[name]-[chunkhash].js',
chunkFilename: '[name]-[chunkhash].chunk.js',
hotUpdateChunkFilename: '[id]-[hash].hot-update.js',
path: resolve('./public/packs'),
publicPath: '/packs/'
},
module: {
strictExportPresence: true,
rules
},
plugins: [
new ManifestPlugin({ publicPath: '/packs/', writeToFileEmit: true })
],
optimization: {
minimizer: [new TerserWebpackPlugin()]
},
resolve: {
extensions
},
resolveLoader: {
modules: ['node_modules']
}
}
}