首先说下为啥需要Entry。这跟webpack的构建机制有关系,webpack跟其他不同的是,webpack是模块打包器。把一切的资源,无论是js、css之类的代码资源,还是图片、字体等的非代码资源,它们都是一个个的模块,它们之间存在依赖关系的,因此根据入口文件去找依赖。入口文件的依赖也有可能有依赖,存在一个依赖树。遍历完这个依赖树之后去生成打包的资源。

Entry

entry是配置模块的入口,可以抽象成输入,webpack执行构建的第一步将从入口开始搜寻及递归解析出所有入口依赖的模块。

注意: entry是必填,若不填写则将导致webpack报错退出

context

webpack在寻找相对路径的文件时会以context为根目录,context默认为执行启动webpack时所在的当前工作目录。如果想改变context的默认配置,则可以在配置文件中这样设置:

module.exports = {
context: path.resolve(__dirname, 'app')
}

注意:context必须是一个绝对路径的字符串,除此之外,还可以通过在启动webpack时带上参数webpack --context 来设置context。

entry的路径和其他依赖的模块的路径可能采用相对于context的路径来描述,context会影响到这些相对路径所指向的真实文件。

Entry类型

  • string类型
格式:
entry: './app/entry'

表示入口模块的文件路径,可以是相对路径。

  • array类型
格式:
entry: ['./app/entry1', './app/entry2']

表示入口模块的文件路径,可以是相对路径。

  • object类型
格式:
entry: {
a: './app/entry-a',
b: ['./app/entry-b1', './app/entry-b2']
}

配置多个入口,每个入口生成一个Chunk。

如果是array类型,则搭配output.library配置项使用时,只有数组里的最后一个入口文件会被导出。

Chunk名称

webpack会为每个生成的Chunk取一个名称,Chunk的名称和Entry的配置有关:

1. 如果entry是一个string或者array,就只会生成一个chunk,这个chunk的名称是main;
2. 如果entry是一个object,就可能出现多个chunk,这时chunk的名称是object键值对里键的名称。

配置动态Entry

假如项目里有多个页面需要为每个页面的入口配置一个entry,但这些页面数量可能会不断增长,这时entry的配置会受到其他因素的影响导致不能写成静态的值。解决办法就是把entry设置成一个函数去动态返回上面所说的配置:

 

//同步函数
entry: () => {
return {
a: './pages/a',
b: './pages/b'
}
} //异步函数
entry: () => {
return new Promise((resolve) => {
resolve({
a: './pages/a',
b: './pages/b'
})
})
}

webpack(2)--Entry的更多相关文章

  1. webpack 多entry 配置

    // webpack 多entry 配置var path = require('path'); module.exports = { entry: { entry2: './entry.js', de ...

  2. webpack中Entry与Output的基础配置

    entry顾名思义,就是打包的入口文件 module.exports = { // 这个文件要做打包,从哪一个文件开始打包 entry: './src/index.js', // 打包文件要放到哪里去 ...

  3. 玩转webpack之webpack的entry output

    webpack的入口配置项表示要配置的文件就是开发环境或者生产环境 浏览器本身不能认识的一些东西必须经过webpack的编译才能认识,但是要去写的时候我们经常用到预编译什么的比如scss比如jsx甚至 ...

  4. Vue之webpack的entry和output

    一.文件结构 二.index.html <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  5. webpack解惑:多入口文件打包策略

    本文是我用webpack进行项目构建的实践心得,场景是这样的,项目是大型类cms型,技术选型是vue,只支持chrome,有诸多子功能模块,全部打包在一起的话会有好几MB,所以最佳方式是进行多入口打包 ...

  6. webpack +vue开发(1)

    首先安装 node.js这是毋庸置疑的,安装完了之后安装webpack npm install webpack -g 接下来创建一个自己的文件夹 webpack-learn在里面创建一个index.h ...

  7. webpack+react+jquery和jquery插件

    要引入jquery插件 全局引入jquery plugins : [new webpack.ProvidePlugin({ $: 'jquery', jQuery:'jquery' "win ...

  8. webpack快速掌握教程

    转载http://yijiebuyi.com/blog/46fb97b11fb8f4055e0b04d1cecb1f69.html #为什么用webpack 如果我们 前端 javascript 能像 ...

  9. 前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍

    webpack的一点介绍 Webpack 把任何一个文件都看成一个模块,模块间可以互相依赖(require or import),webpack 的功能是把相互依赖的文件打包在一起.webpack 本 ...

随机推荐

  1. Java IO流经典练习题

    一.练习的题目 (一) 在电脑D盘下创建一个文件为HelloWorld.txt文件,判断他是文件还是目录,在创建一个目录IOTest,之后将HelloWorld.txt移动到IOTest目录下去:之后 ...

  2. 第二篇 makefile的基本结构

    makefile用于定义并描述源文件之间的依赖关系,用于说明如何编译各个源文件并生成最终的可执行文件,规则是makefile中的基本组成部分. 一个最基本的依赖规则如下所示: targets代表这个规 ...

  3. Android Studio - 安卓开发工具 打开后报错集合、修复指南

    安卓开发工具错误修复 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创新 ...

  4. PR4

    4.1视频切换特效: 视频切换:视频和视频之间的过渡 4.2特效参数设置方法 4.3视频切换特效的技巧 多张图片,拖入特效慢. 选中多张图片 右键选中“设置所选..” 设置图片时间: 点常规后 设置完 ...

  5. PAT天梯:L1-019. 谁先倒

    L1-019. 谁先倒 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳 ...

  6. 二进制枚举 + 容斥定理(hdoj 4336 )

    hdoj 4336 http://acm.hdu.edu.cn/showproblem.php?pid=4336 这是一道关于概率与期望的问题,其中   期望 =  1 / 概率 容斥原理  P =  ...

  7. day12 python学习 装饰器

    闭包函数: 内部函数包含对外部作用域而非全剧作用域名字的引用,该内部函数称为闭包函数#函数内部定义的函数称为内部函数 闭包函数获取网络应用 from urllib.request import url ...

  8. greasemonkey修改网页内指定函数

    greasemonkey replace function? 方法1:编写GM代码 alert("hello2"); var mydiv =document.getElementB ...

  9. win xp 关闭动画屏幕角色,那只小狗

    这个动画屏幕角色每次会占用两秒左右的时间. 在搜索选项中打开"改变首选项(G)" -选择 “不使用动画屏幕角色(S)”. - -

  10. mui plus.uploader.createUpload 上传文件服务端获取文件名中文乱码问题

    客户端上传文件需要做一次url编码:encodeURIComponent(fileName) 服务端:URL解码 var fileName = HttpUtility.UrlDecode(hfc.Fi ...