-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwebpack.config.js
More file actions
143 lines (135 loc) · 4.38 KB
/
webpack.config.js
File metadata and controls
143 lines (135 loc) · 4.38 KB
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
const fs = require('fs');
const path = require('path');
const webpack = require('webpack');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const uglifyJsPlugin = webpack.optimize.UglifyJsPlugin;
const CommonsChunkPlugin = webpack.optimize.CommonsChunkPlugin;
const srcDir = path.resolve(__dirname, 'src');
module.exports = function(webpackEnv) { // 接收cli中 --env 参数,对象类型
console.log('\n>>>>>>>>>>>>>>>>>>>>>>webpackEnv:\n', webpackEnv, '------------')
let conf = {
cache: true,
context: srcDir,
devtool: 'source-map',
entry: {
'entry/index': path.resolve(srcDir, 'entry/index.js')
},
output: {
path: path.join(__dirname, 'can'),
publicPath: 'can',
filename: "[name].js",
chunkFilename: "[chunkhash].js"
},
module: {
rules: [
{
test: /\.(es|js)$/,
exclude: /libs|node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['es2015']
}
}
},
{
test: /\.(css|less)$/,
exclude: /libs|node_modules/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [
{
loader: 'css-loader',
options: {
minimize: true,
}
},
'postcss-loader',
'less-loader',
]
})
},
{
test: /\.(gif|jpg|png)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 5120, //小于5K的图片base64
name: `[path][name].[ext]?[hash:8]`
}
},
// 'img-loader',
]
},
]
},
devServer: {
contentBase: process.cwd(), //Relative directory for base of server
host: 'www.fe.cn',
headers: {
'Access-Control-Allow-Origin': '*' // 字体文件跨域
},
publicPath: '/can/',
hot: true,
port: 8888,
watchContentBase: true,
},
resolve: {
alias: {
$: 'window.$',
src: srcDir,
libs: srcDir + "/libs",
img: srcDir + "/img",
style: srcDir + '/style',
// page: srcDir + "/page",
entry: srcDir + "/entry",
modules: srcDir + '/modules',
// components: srcDir + '/components',
}
},
externals: {
// jquery: 'jQuery',
},
plugins: [
new ExtractTextPlugin('[name].css'),
/* 全局变量 */
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
'window.jquery': 'jquery',
'window.$': 'jquery',
}),
//清空build目录
new CleanWebpackPlugin(['build', 'dist'], {
root: process.cwd()
}),
new CopyWebpackPlugin([{
context: srcDir,
from: 'img',
to: 'img'
},{
context: srcDir,
from: 'libs',
to: 'libs'
}]),
]
};
// 压缩
// if (env.uglify) {
// conf.plugins.push(
// new uglifyJsPlugin({
// compress: {
// warnings: false
// },
// output: {
// // 去掉注释内容
// comments: false,
// },
// })
// )
// }
return conf;
};