const path = require('path'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin'); module.exports = { mode: 'production', entry: [ './src/driver.scss', './src/index.js', ], output: { path: path.join(__dirname, '/../dist'), publicPath: '/dist/', filename: 'driver.min.js', libraryTarget: 'umd', library: 'Driver', libraryExport: 'default', }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, loader: 'eslint-loader', enforce: 'pre', options: { failOnWarning: false, failOnError: true, }, }, { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader', }, { test: /.scss$/, loader: ExtractTextPlugin.extract([ { loader: 'css-loader', options: { url: false }, }, 'sass-loader', ]), }, ], }, plugins: [ new ExtractTextPlugin({ filename: 'driver.min.css', allChunks: true, }), new OptimizeCssAssetsPlugin({ assetNameRegExp: /\.min\.css$/g, // eslint-disable-next-line global-require cssProcessor: require('cssnano'), cssProcessorPluginOptions: { preset: [ 'default', { discardComments: { removeAll: true }, }, ], }, canPrint: true, }), ], stats: { colors: true, }, devtool: 'cheap-module-source-map', };