-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathwebpack.config.js
executable file
·68 lines (65 loc) · 1.58 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
const path = require('path');
const rules = require('require.all')('./tasks/rules');
const plugins = require('require.all')('./tasks/plugins');
module.exports = env => {
let environment = env.NODE_ENV;
env.NODE_ENV = JSON.stringify(environment);
rules((name, rule) => rule(environment));
plugins((name, rule) => rule(environment));
return ({
mode: environment,
entry: {
app: [
path.resolve(__dirname, 'app/scripts/app.js'),
path.resolve(__dirname, 'app/styles/app.scss')
]
},
output: {
filename: '[name].js'
},
module: {
rules: [
...rules.files,
rules.scripts,
rules.styles
]
},
plugins: [
plugins.html,
plugins.globals,
plugins.extractStyles
],
devServer: {
open: true,
port: 4000,
https: false,
hot: true,
historyApiFallback: true,
watchOptions: {
poll: true
}
// proxy: { '/api': 'http://localhost:3000' }
},
optimization: {
minimizer: [plugins.uglify],
splitChunks: {
cacheGroups: {
vendor: {
chunks: 'all',
test: path.resolve(__dirname, 'node_modules'),
name: 'vendor',
enforce: true
}
}
}
},
resolve: {
alias: {
'styles': path.resolve(__dirname, 'app/styles'),
'assets': path.resolve(__dirname, 'app/assets'),
'~': path.resolve(__dirname, 'app/scripts')
}
},
devtool: (() => environment === 'production' ? false : 'inline-source-map')()
});
};