-
Notifications
You must be signed in to change notification settings - Fork 57
/
Copy pathwebpack.config.base.js
130 lines (127 loc) · 2.76 KB
/
webpack.config.base.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
/* eslint-disable */
const webpack = require('webpack');
const path = require('path')
const CleanWebpackPlugin = require('clean-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const env = process.env.NODE_ENV
let webpackConfig = {
// 配置入口
entry: {},
// 配置出口
output: {
path: path.join(__dirname, './dist/'),
filename: 'static/js/[name].[hash:7].js',
publicPath: '/',
},
// 路径配置
resolve: {
extensions: ['.js', '.json'],
alias: {
'@': path.resolve(__dirname, 'src')
}
},
// loader配置
module: {
rules: [
{
test: /\.(js)$/,
loader: 'eslint-loader',
enforce: 'pre',
include: [path.join(__dirname, './src')],
options: {
formatter: require('eslint-friendly-formatter')
}
},
{
test: /\.ejs$/,
loader: 'ejs-loader',
include: [path.join(__dirname, './src')],
query: {
variable: 'data',
// mustache模板:
// 具体参考lodash/underscore的template方法
// interpolate : '\\{\\{(.+?)\\}\\}',
// evaluate : '\\[\\[(.+?)\\]\\]'
}
},
// html中的img标签
{
test: /\.html$/,
loader: 'html-withimg-loader',
include: [path.join(__dirname, './src')],
options: {
limit: 10000,
name: 'static/img/[name].[hash:7].[ext]'
}
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [path.join(__dirname, './src')]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: 'static/img/[name].[hash:7].[ext]'
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: 'static/media/[name].[hash:7].[ext]'
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: 'static/fonts/[name].[hash:7].[ext]'
}
},
{
test: /\.css$/,
use: [
env == 'development' ? 'style-loader' : MiniCssExtractPlugin.loader,
'css-loader',
],
},
{
test: /\.less$/,
use: [
env == 'development' ? 'style-loader' : MiniCssExtractPlugin.loader,
'css-loader',
'less-loader'
],
},
{
test: /\.(sass|scss)$/,
use: [
env == 'development' ? 'style-loader' : MiniCssExtractPlugin.loader,
'css-loader',
'sass-loader'
],
}
]
},
plugins: [
// 全局引入lodash
new webpack.ProvidePlugin({
_: 'lodash'
}),
//设置每一次build之前先删除dist
new CleanWebpackPlugin(
['dist/*',], //匹配删除的文件
{
root: __dirname, //根目录
verbose: true, //开启在控制台输出信息
dry: false //启用删除文件
}
)
]
};
module.exports = webpackConfig;