webpack整体配置介绍

主要配置参数

entry

项目的入口和起点,指示webpack应该使用哪个模块,来作为构建项目依赖图的开始。

output

output告诉webpack在哪里输出打包编译好的文件,并且规定文件的命名。

module

在module可以配置loader的规则,来规定如何对源代码进行转换。

css-loader,url-loader,babel-loader

resolve

设置模块如何被解析。

plugins

plugin 用于扩展webpack的功能。它直接作用于 webpack,扩展了它的功能。

解决一些loader无法解决的问题。

乞丐版的webpack配置

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
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
module.exports = {
//webpack4.0新增,可选择设置为development和production
mode:'development',
//入口起点(entry point)指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。
// 进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。
entry:'./src/main.js',
//output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist。
// 基本上,整个应用程序结构,都会被编译到你指定的输出路径的文件夹中。可以通过在配置中指定一个 output 字段,来配置这些处理过程
output:{
//path.resolve方法用于将相对路径转为绝对路径。
path:path.resolve(__dirname,'dist'),
filename: "bundle.js"
},
//loader 用于对模块的源代码进行转换。
module: {
rules: [
//配置babel-loader
{
test:'/\.js$/', //匹配js文件
loader: "babel-loader", //用于解析对应的文件
exclude:/node_modules/ //不包括node_module下的js文件
},
//配置css-loader
{
test:/\.css$/,
loader: "style-loader!css-loader"
},
//配置url-loader
{
test:/\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: "url-loader",
options: {
limit:10000
}
},
//配置字体
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000
}
},
{
test: /\.vue$/,
loader: 'vue-loader'
}
]
},
//这些选项能设置模块如何被解析。
resolve: {
//自动解析确定的扩展。
extensions: ['.js','.vue'],
alias: {
'vue$': 'vue/dist/vue.esm.js' // 'vue/dist/vue.common.js' for webpack 1
}
},
//插件目的在于解决 loader 无法实现的其他事。
plugins:[
new HtmlWebpackPlugin({
title: 'vue-cli-webpack',
template: 'index.html'
}),
new VueLoaderPlugin()
],
//告知开发服务器需要从哪儿加载文件
devServer:{
contentBase:"./dist"
},
}