入口起点(entry point) 指示webpack应该使用哪个模块,来作为构建其内部 依赖图(dependency graph) 的开始,进入入口起点后,webpack会找出有哪些模块和库是入口起点(直接和间接)依赖的

它的默认值是 ./src/index.js,但你可以通过在 webpack-configuration 中配置 entry 属性,来指定一个(或多个)不同的入口起点,单入口写法有两种方式

1
2
3
4
5
6
7
8
9
10
11
/* webpack.config.js */
module.exports = {
entry: './path/to/my/entry/file.js'
}

/* webpack.config.js */
module.exports = {
entry: {
main: './path/to/my/entry/file.js'
}
}

第二种写法就可以为打包出的 chunk 命名,这里的配置的名字就是 main

通常情况下,如果不考虑代码分割,那么一个entry对应就会打包出一个chunk,在多页面应用中,通常会需要多个bundle,因此入口也会配置多个,还有一种情况就是想要一次注入多个依赖文件,并且将它们的依赖关系绘制在 一个chunk 中时,也可以使用多入口的配置,配置示例如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* webpack.config.js */
module.exports = {
entry: {
main1: './path/to/my/entry/file.js',
main2: './path/to/my/entry/file.js'
}
}

/* webpack.config.js */
module.exports = {
entry: ['./src/file_1.js', './src/file_2.js'],
output: {
filename: 'bundle.js'
}
}

对于对象形式的语法,我们还可以添加 对象描述符,以便我们更详尽的描述所需的配置,配置项如下:

示例配置如下:

1
2
3
4
5
6
7
8
9
module.exports = {
entry: {
a2: 'dependingfile.js',
b2: {
dependOn: 'a2',
import: './src/app.js'
}
}
};

需要注意 runtimedependOn 不应在同一个入口上同时使用,并且确保 runtime 不能与 已存在的入口名称 重名

结语

入口entry是webpack打包项目的起点,因此是一个十分重要的概念,往往单入口或者多入口的选择会很大程度影响项目的性能,因此还是很有必要把这个概念吃透的,好啦,完结,撒花~