# 1、entry 用来定义入口文件,可以是字符串或者是对象
1、entry值为字符串,如
entry: __dirname + './index.js'
2、entry值为数组,表示数组里面的文件最后导出到一个js,如
entry: ['index1.js', 'index2.js']
3、entry值为对象,表示输出多个文件,输出文件也应做相应的配置,如
entry: {
home: './home.js',
index: ['./index1.js', './index2.js'],
register: './register.js',
error: './error.js',
vendor: ['react', 'react-dom']
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 2、output 用来定义输出文件,对象类型
1、path属性: 用来定义打包后文件的输出路径,如
path: './public/js'
2、filename属性: 用来定义输出文件的文件名,可以是一个字符串
如果entry为字符串或数组,表示生成到统一个文件,直接可以这样写,如
filename: 'build.js'
如果entry为对象,可以根据entry的key值构建到不同的js包中,如
filename: '[name].bundle.js'
如上述entry对象分别会打包到不同js包中,依次会打包到home.bundle.js、index.bundle.js、register.bundle.js、error.bundle.js
3、publicPath属性: 指定被引用的URL地址,一般为public
publicPath: '/assets/'
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 3、module 模块加载器,对象类型
module: {
loaders: {
// 正则匹配,匹配到的会进行打包
test: /\.js$/,
// 设置加载器
loader: 'babel-loader',
// 不打包的文件夹
exclude: /node_modules/
},
{
test: /\.css$/,
loader: 'style-loader!css-loader',
exclude: /node_modules/
},
...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 4、resolve用于配置中补全的后缀
resolve: {
// 自动扩展文件的后缀名
extensions: ['', '.', '.json'],
// 设置查找路径
root: 'resource/components/',
// 模块别名定义,方便后续直接引用别名,不需要写很长的地址
alias: {
requestData: 'js/api/ajax.js'
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 5、plugins 添加各种额外的插件
plugins: [
// 单独将entry中的文件进行打包
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
filename: 'vendor.bundle.js'
}),
// 代码压缩UglifyJsPlugin
new webpack.optimize.UglifyJsPlugin({
compress: {
warning: false
}
})
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 6、externals 通过script引入类库,但不希望webpack打包到输出文件中
externels: {
'react': 'window.React',
'react-dom': 'window.ReactDOM',
'router': 'window.ReactRouter',
'echarts': 'window.echarts'
}
1
2
3
4
5
6
2
3
4
5
6
← Web应用中实现全屏效果 Require →