webpack-第03节:配置文件:入口和出口
上节课通过一个小Demo我们对Webpack有了初步了解,但是上节课的终端打包方案,在实际开发中并不使用,而是使用Webpack的配置文件的方式进行设置。这节课我们就学一下配置文件的大体结构和入口出口文件的配置。
配置文件webpack.config.js
webpack.config.js就是Webpack的配置文件,这个文件需要自己在项目根目录下手动建立。建立好后我们对其进行配置,先看下面的代码(webpack.config.js的基本结构),这是一个没有内容的标准webpack配置模版。
webpack.config.js
- entry:配置入口文件的地址,可以是单一入口,也可以是多入口。
- output:配置出口文件的地址,在webpack2.X版本后,支持多出口配置。
- module:配置模块,主要是解析CSS和图片转换压缩等功能。
- plugins:配置插件,根据你的需要配置不同功能的插件。
- devServer:配置开发服务功能,后期我们会详细讲解。
entry选项(入口配置)
这个选项就是配置我们要压缩的文件一般是JavaScript文件(当然也可以是CSS…..)。按照上节课的代码(如果你上节课的代码还没作,那你可以返回去重新作一下),这里要填写的是src目录下的entery.js文件。
wepback.config.js中的entry选项
output选项(出口配置)
出口配置是用来告诉webpack最后打包文件的地址和文件名称的。按照上节课的操作,应该打包到dist目录下。在编写出口文件时,我们需要用到一点Node的知识,如果你还不会Node也没有 关系,就简单的两句代码,你记住就可以了(在视频中我还有详细的讲解)。
如果你只这样写,是会报错的:找不到path这个东西。所以我们要在webpack.config.js的头部引入path,代码如下:
1
|
const path = require('path');
|
这里我们使用了const,这是ES6的语法,如果你对ES6还不熟悉,也可以看技术胖ES6的课程哦(http://jspang.com/2017/06/03/es6/)。
其实path.resolve(__dirname,’dist’)就是获取了项目的绝对路径。如果你还是不理解,我会在视频中给你进行演示。
filename:是打包后的文件名称,这里我们起名为bundle.js。
现在webpack.config.js的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
const path = require('path');
module.exports={
//入口文件的配置项
entry:{
entry:'./src/entry.js'
},
//出口文件的配置项
output:{
//输出的路径,用了Node语法
path:path.resolve(__dirname,'dist'),
//输出的文件名称
filename:'bundle.js'
},
//模块:例如解读CSS,图片如何转换,压缩
module:{},
//插件,用于生产模版和各项功能
plugins:[],
//配置webpack开发服务功能
devServer:{}
}
|
这个代码写完后,可以在终端中直接输入webpack就会进行打包。
在实际开发中我们都是通过配置文件进行打包的,所以必须要掌握好。
多入口、多出口配置
Webpack在版本1的时候很难设置多出口文件,但是在2版本开始就变的很方便了。直接看多入口和多出口的文件配置,然后可以和单一出口对比一下,你会发现这种设置非常简单(只需改动两点配置就可以)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
const path = require('path');
module.exports={
//入口文件的配置项
entry:{
entry:'./src/entry.js',
//这里我们又引入了一个入口文件
entry2:'./src/entry2.js'
},
//出口文件的配置项
output:{
//输出的路径,用了Node语法
path:path.resolve(__dirname,'dist'),
//输出的文件名称
filename:'[name].js'
},
//模块:例如解读CSS,图片如何转换,压缩
module:{},
//插件,用于生产模版和各项功能
plugins:[],
//配置webpack开发服务功能
devServer:{}
}
|
可以看到代码的第7和14行进行了增加和修改,在入口文件配置中,增加了一个entry2.js的入口文件(这个文件你需要自己手动建立),这时候要打包的就有了两个入口文件。在代码14行我们把原来的bundle.js修改成了[name].js。
[name]的意思是根据入口文件的名称,打包成相同的名称,有几个入口文件,就可以打包出几个文件。
终端输入webpack 打包 后 dist 文件夹里生成 与src 文件夹同名的js文件