-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
86 lines (72 loc) · 2.42 KB
/
webpack.config.js
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
require('webpack');
require("@babel/polyfill");
let path = require('path');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
// Устанавливаем дополнительные пути статики
// =========================================
const nodePath = path.join('node_modules/');
const customNodePathBuild = path.join('/build/');
const sourceMaps = (process.env.MODE === 'development') ? 'cheap-eval-source-map' : false;
module.paths.unshift(customNodePathBuild);
// Стартовый конфиг
// ===============
let config = {
entry: {
// пример entry - меняем их на свои.
'animation-app': ['@babel/polyfill', __dirname + '/src/index.js'],
},
output: {
path: path.resolve(__dirname, 'bundle'),
filename: '[name].js',
publicPath: '/bundle/'
},
module: {
rules: [
// JSX
// ===
{
test: /\.(js|jsx)$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
options: {
"presets": [
"@babel/preset-react",
"@babel/preset-env"
],
"plugins": [
[
"@babel/plugin-proposal-class-properties",
{
"loose": true
}
],
"@babel/plugin-syntax-dynamic-import"
]
}
},
]
},
// игнорируем папку с модулями для скорости. Можно раскомментировать.
watchOptions: {ignored: /node_modules/},
// метод сборки source-map. Sourcemaps включаются только в режиме development.
devtool: sourceMaps,
resolve: {
modules: [nodePath, customNodePathBuild],
extensions: ['.js', '.json', '.jsx']
},
resolveLoader: {
modules: [nodePath]
},
optimization: {
minimizer: [new UglifyJsPlugin()],
splitChunks: {
chunks: 'all'
}
},
externals: {
jquery: 'jQuery',
// paper: 'paper'
}
};
module.exports = config;