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', | |
}; | |