forked from yinjiazeng/NginxGUI
-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
145 lines (141 loc) · 3.74 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
const path = require('path');
const webpack = require('webpack');
const HTMLWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const UglifyjsPlugin = require('uglifyjs-webpack-plugin');
const NODE_ENV = process.env.NODE_ENV;
//生产环境构建,生成dist代码压缩
const ENV_PROD = NODE_ENV === 'production';
//开发环境构建,启动服务,不压缩代码
const ENV_DEV_SERVER = NODE_ENV === 'dev';
let plugins = [
new ExtractTextPlugin('style/[name].[chunkhash].css'),
new webpack.optimize.CommonsChunkPlugin({
name:'common'
}),
new CleanWebpackPlugin(['./dist']),
new HTMLWebpackPlugin({
//以目录形式访问页面,不用加.html后缀
filename:'index.html',
template:'./src/index.ejs',
minify:{
//移除空白
collapseWhitespace:true,
//压缩css
minifyCSS:true,
//压缩js
minifyJS:true
}
})
]
if(!ENV_DEV_SERVER){
plugins.push(
new UglifyjsPlugin()
)
}
module.exports = {
entry:'./src/index',
devServer:{
port:8081,
contentBase:'./dist'
},
plugins:plugins,
resolve:{
extensions:['.js', '.json', '.less', '.css']
},
module:{
rules:[
{
test:/\.js$/,
exclude:/node_modules/,
use:[{
loader:'babel-loader',
options: {
plugins:[
[
'import', {
'libraryName': 'antd',
'libraryDirectory': 'es',
'style': true
}
]
],
presets:[
'es2015',
'react',
'stage-0'
]
}
}]
},
{
test:/\.less$/,
include:/node_modules/,
use:ExtractTextPlugin.extract({
use:[{
loader:'css-loader',
options:{
minimize:!ENV_DEV_SERVER
}
}, {
loader:'less-loader',
options:{
//https://github.com/ant-design/ant-design/issues/7927#issuecomment-372513256
javascriptEnabled:true
}
}]
})
},
{
test:/\.less$/,
exclude:/node_modules/,
use:ExtractTextPlugin.extract({
use:[{
loader:'css-loader',
options:{
modules:true,
minimize:!ENV_DEV_SERVER
}
}, {
loader:'less-loader',
options:{
//https://github.com/ant-design/ant-design/issues/7927#issuecomment-372513256
javascriptEnabled:true
}
}]
})
},
{
test:/\.(svg|ttf|woff|eot)(\?.*)?$/,
use: [
{
loader:'file-loader',
options:{
name:'[name].[hash:7].[ext]',
publicPath:'./font/',
outputPath:'font/'
}
}
]
},
{
test:/\.(png|jpe?g|gif)(\?.*)?$/,
use: [
{
loader:'file-loader',
options:{
name:'[name].[hash:7].[ext]',
publicPath:'./images/',
outputPath:'images/'
}
}
]
}
]
},
output:{
filename:'script/[name].[chunkhash].js',
path:path.resolve(__dirname, './dist')
}
}