const path = require('path'); const CopyWebpackPlugin = require('copy-webpack-plugin'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); const isProduction = process.env.NODE_ENV === 'production'; const scriptFileName = isProduction ? 'driver-demo.min.js' : 'driver-demo.js'; const styleFileName = isProduction ? 'driver-demo.min.css' : 'driver-demo.css'; module.exports = { mode: isProduction ? 'production' : 'development', entry: [ 'webpack-dev-server/client?http://localhost:3000', './demo/styles/demo.scss', './demo/scripts/emoji.js', './demo/scripts/demo.js', './src/index.js', ], output: { path: path.join(__dirname, '/dist/demo'), publicPath: '/dist/demo/', filename: scriptFileName, libraryTarget: 'umd', library: 'Driver', }, 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', options: { presets: [ [ 'env', { useBuiltIns: 'usage', }, ], ], plugins: [ 'babel-plugin-add-module-exports', 'transform-object-rest-spread', ], }, }, { test: /.scss$/, loader: ExtractTextPlugin.extract([ { loader: 'css-loader', options: { minimize: isProduction, url: false }, }, 'sass-loader', ]), }, ], }, plugins: [ new ExtractTextPlugin({ filename: styleFileName, allChunks: true, }), new CopyWebpackPlugin([ './demo/images/separator.png', ]), ], stats: { colors: true, }, devtool: 'cheap-module-eval-source-map', };