File size: 2,196 Bytes
d86254c
f0acb91
1809cfd
4554dfb
a98e9c8
d86254c
d52f2d6
e3c10a2
 
d52f2d6
d86254c
d52f2d6
c766f4e
25ec032
d52f2d6
8a554f1
f0dbec9
c766f4e
4554dfb
a98e9c8
d52f2d6
c766f4e
8122c36
dd89937
c766f4e
 
 
ef1f6b6
 
 
 
 
 
 
 
 
 
c766f4e
 
 
 
 
1809cfd
 
d52f2d6
 
 
17851f6
d52f2d6
 
 
1809cfd
d86254c
c766f4e
1809cfd
 
d52f2d6
1809cfd
 
4554dfb
 
 
 
 
 
 
 
 
 
 
 
 
 
f0acb91
17851f6
 
 
 
f0acb91
a98e9c8
 
 
 
1809cfd
c766f4e
 
 
ebda3a6
c766f4e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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,
      // eslint-disable-next-line global-require
      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',
};