|
const path = require('path'); |
|
const CopyWebpackPlugin = require('copy-webpack-plugin'); |
|
const ExtractTextPlugin = require('extract-text-webpack-plugin'); |
|
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin'); |
|
const HtmlWebpackPlugin = require('html-webpack-plugin'); |
|
|
|
const isProduction = process.env.NODE_ENV === 'production'; |
|
const scriptFileName = 'driver-demo.min.js'; |
|
const styleFileName = 'driver-demo.min.css'; |
|
|
|
module.exports = { |
|
mode: isProduction ? 'production' : 'development', |
|
entry: [ |
|
'./demo/styles/demo.scss', |
|
'./demo/scripts/demo.js', |
|
'./src/index.js', |
|
].filter(entryPoint => !!entryPoint), |
|
output: { |
|
path: path.join(__dirname, '/../dist/demo'), |
|
publicPath: './', |
|
filename: scriptFileName, |
|
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: styleFileName, |
|
allChunks: true, |
|
}), |
|
new OptimizeCssAssetsPlugin({ |
|
assetNameRegExp: /\.min\.css$/g, |
|
|
|
cssProcessor: require('cssnano'), |
|
cssProcessorPluginOptions: { |
|
preset: [ |
|
'default', |
|
{ |
|
discardComments: { removeAll: true }, |
|
}, |
|
], |
|
}, |
|
canPrint: true, |
|
}), |
|
new CopyWebpackPlugin([ |
|
{ |
|
from: './demo/images/', |
|
to: 'images', |
|
}, |
|
]), |
|
new HtmlWebpackPlugin({ |
|
template: 'demo/index.html', |
|
favicon: 'demo/images/favicon.png', |
|
}), |
|
], |
|
stats: { |
|
colors: true, |
|
}, |
|
devtool: 'cheap-module-eval-source-map', |
|
}; |
|
|