|
1 const path = require('path'); |
|
2 // const nodeExternals = require('webpack-node-externals'); |
|
3 const MiniCssExtractPlugin = require('mini-css-extract-plugin'); |
|
4 |
|
5 module.exports = { |
|
6 entry: path.resolve(__dirname, 'src/index.js'), |
|
7 output: { |
|
8 path: path.resolve(__dirname, 'lib'), |
|
9 filename: 'dashboard-components.js', |
|
10 library: '', |
|
11 libraryTarget: 'commonjs2', |
|
12 }, |
|
13 resolve: { |
|
14 extensions: ['.wasm', '.mjs', '.js', '.json', '.jsx'], |
|
15 }, |
|
16 // externals: [nodeExternals()], |
|
17 target: 'web', |
|
18 module: { |
|
19 rules: [ |
|
20 { |
|
21 test: /\.(js|jsx)$/, |
|
22 enforce: 'pre', |
|
23 exclude: /node_modules/, |
|
24 loader: 'eslint-loader', |
|
25 options: { |
|
26 emitWarning: true, |
|
27 failOnWarning: true, |
|
28 failOnError: true, |
|
29 }, |
|
30 }, |
|
31 { |
|
32 test: /\.(js|jsx)$/, |
|
33 exclude: /node_modules/, |
|
34 loader: 'babel-loader', |
|
35 options: { |
|
36 presets: ['@babel/preset-env', '@babel/preset-react'], |
|
37 plugins: ['@babel/plugin-proposal-class-properties'], |
|
38 }, |
|
39 }, |
|
40 { |
|
41 test: /\.s[c|a]ss$/, |
|
42 use: ['style-loader', MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader', 'sass-loader'], |
|
43 }, |
|
44 { |
|
45 test: /\.(png|jpg|gif)$/i, |
|
46 use: [ |
|
47 { |
|
48 loader: 'url-loader', |
|
49 options: { |
|
50 limit: 8192, |
|
51 }, |
|
52 }, |
|
53 ], |
|
54 }, |
|
55 ], |
|
56 }, |
|
57 plugins: [ |
|
58 new MiniCssExtractPlugin({ |
|
59 filename: 'dashboard-components.css', |
|
60 }), |
|
61 ], |
|
62 performance: { |
|
63 hints: false, |
|
64 }, |
|
65 }; |