webpack(2)--Entry
首先说下为啥需要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的更多相关文章
- webpack 多entry 配置
// webpack 多entry 配置var path = require('path'); module.exports = { entry: { entry2: './entry.js', de ...
- webpack中Entry与Output的基础配置
entry顾名思义,就是打包的入口文件 module.exports = { // 这个文件要做打包,从哪一个文件开始打包 entry: './src/index.js', // 打包文件要放到哪里去 ...
- 玩转webpack之webpack的entry output
webpack的入口配置项表示要配置的文件就是开发环境或者生产环境 浏览器本身不能认识的一些东西必须经过webpack的编译才能认识,但是要去写的时候我们经常用到预编译什么的比如scss比如jsx甚至 ...
- Vue之webpack的entry和output
一.文件结构 二.index.html <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- webpack解惑:多入口文件打包策略
本文是我用webpack进行项目构建的实践心得,场景是这样的,项目是大型类cms型,技术选型是vue,只支持chrome,有诸多子功能模块,全部打包在一起的话会有好几MB,所以最佳方式是进行多入口打包 ...
- webpack +vue开发(1)
首先安装 node.js这是毋庸置疑的,安装完了之后安装webpack npm install webpack -g 接下来创建一个自己的文件夹 webpack-learn在里面创建一个index.h ...
- webpack+react+jquery和jquery插件
要引入jquery插件 全局引入jquery plugins : [new webpack.ProvidePlugin({ $: 'jquery', jQuery:'jquery' "win ...
- webpack快速掌握教程
转载http://yijiebuyi.com/blog/46fb97b11fb8f4055e0b04d1cecb1f69.html #为什么用webpack 如果我们 前端 javascript 能像 ...
- 前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍
webpack的一点介绍 Webpack 把任何一个文件都看成一个模块,模块间可以互相依赖(require or import),webpack 的功能是把相互依赖的文件打包在一起.webpack 本 ...
随机推荐
- opencv-python教程学习系列1-安装库
前言 以后的项目可能会用到python和opencv进行实现,故准备opencv-python教程学习系列记录学习过程的点滴,这是这一系列的开篇,坚持学习,共同进步. 系列教程参照OpenCV-Pyt ...
- ScrollView在布局中的作用
ScrollView就是滚动一个View,将View里面的内容滚动起来. 但是由于scroolview只能有一个孩子,因此我们可以在ScrollView中在定义一个布局. 这样的话,我们就会直接滚动整 ...
- CF1096. G. Lucky Tickets(快速幂NTT)
All bus tickets in Berland have their numbers. A number consists of n digits (n is even). Only k dec ...
- zoj 1108 FatMouse's Speed 基础dp
FatMouse's Speed Time Limit: 2 Seconds Memory Limit:65536 KB Special Judge FatMouse believe ...
- 不要使用 Dispatcher.Invoke,因为它可能在你的延迟初始化 Lazy 中导致死锁
WPF 中为了 UI 的跨线程访问,提供了 Dispatcher 线程模型.其 Invoke 方法,无论在哪个线程调用,都可以让传入的方法回到 UI 线程. 然而,如果你在 Lazy 上下文中使用了 ...
- 数据库备份-SQL Server 维护计划
SQL Server 维护计划(数据库备份) 公司的项目都需要定期备份,程序备份关掉iis站点复制文件就可以了,难受的地方就是数据库的备份了.服务器上装的大都是英文版,一看见英文,操作都变得小心翼 ...
- laravel集合
1.简介 Illuminate\Support\Collection 类为处理数组数据提供了平滑.方便的封装.例如,查看下面的代码,我们使用辅助函数 collect 创建一个新的集合实例,为每一个元素 ...
- php重新整理数组索引
语法 array_merge(array1,array2,array3...) 参数 描述 array1 必需.输入的第一个数组. array2 必需.输入的第二个数组. array3 可选.可指定的 ...
- 记录 ThinkPHP 5.* 漏洞修复后的情况
记录 ThinkPHP 5.* 漏洞修复后的情况 ThinkPHP 官方 2018-12-09 下午收到漏洞报告. 2018-12-09 晚上看到 Git 已经更新了,修复了漏洞. 2018-12-1 ...
- maven 知识点2
maven 命令: table th:first-of-type { width: 500px; } table th:nth-of-type(2) { } 命令 含义 mvn help:effect ...