-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebpack.config.js
107 lines (105 loc) · 2.21 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
//webpack 是node写的
let path = require('path');
let HtmlWebpackPlugin = require('html-webpack-plugin');
let MiniCssExtractPlugin = require('mini-css-extract-plugin')
let OptimizeCssAssetsWebpackplugin =require('optimize-css-assets-webpack-plugin')
let UglifyjsWebpackPlugin = require('uglifyjs-webpack-plugin');
let webpack = require('webpack')
//node和核心模块 路径模块
module.exports={
optimization:{
minimizer:[
new UglifyjsWebpackPlugin({}),
new OptimizeCssAssetsWebpackplugin({})
]
},
mode:'production',
entry:'./src/index.js',
output:{
path:path.resolve(__dirname,'dist'),
filename:'bundle[hash:6].js',
// publicPath:'http://www.baidu.com'
},
devServer:{
port:'3000',
contentBase:'./dist',
progress:true,
compress:true
},
externals:{
jquery:'jQuery'
},
plugins:[
new HtmlWebpackPlugin({
template:'./src/index.html',
filename:'index.html',
hash:true,
minify:{
removeAttributeQuotes:true,
collapseWhitespace:true
}
}),
new MiniCssExtractPlugin({
filename:'css/main.css'
}),
new webpack.ProvidePlugin({
$:'jquery'
})
],
module:{
rules:[
{
test:/\.html$/,
use:'html-withimg-loader'
},
{
test:/\.(jpg|png|gif)$/,
use:{
loader:'url-loader',
options:{
limit:1,
outputPath:'img/',
publicPath:'http://www.baidu.com/'
}
}
},
{
test:'/\.js$/',
loader:'eslint-loader',
options:{
enforce:'pre'
}
},
{
test:/\.js$/,
use:{
loader:'babel-loader',
options:{
presets:['@babel/preset-env'],
plugins:[
["@babel/plugin-proposal-decorators", { "legacy": true }],
["@babel/plugin-proposal-class-properties", { "loose" : true }],
'@babel/plugin-transform-runtime',
]
}
},
include:path.resolve(__dirname,'src'),
exclude:/node_modules/
},
{
test:/\.css$/,
use:[
MiniCssExtractPlugin.loader,
'css-loader',
'postcss-loader'
]
},
{
test:/.less$/,
use:[ MiniCssExtractPlugin.loader,
'css-loader',
'postcss-loader','less-loader']
}
]
}
}