webpack--Entry
webpack
通过context
和entry
这两个配置来共同决定入口文件的路径。在配置入口实际上做了两件事儿:
- 确定入口模块位置,告诉
webpack
从哪里进行打包 - 定义
chunk name
.如果工程只有一个入口,那么默认其chunk name
为“main”;如果工程有多个入口,我们需要为每个入口定义chunk name,来作为该chunk name的唯一标识
context
Webpack在寻找相对路径的文件时会以context
为根目录.
context
默认为执行启动Webpack时所在的当前工作目录.也可以在Webpack目录中进行配置
//例1
module.exports = {
context:path.resolve(__dirname,'./src'),
entry:'./scripts/index.js', //<工程根目录>/src/scripts/index.js
}
//例2
module.exports = {
context:path.resolve(__dirname,'./src/scrpts'),
entry:'./index.js', //<工程根目录>/src/scripts/index.js
}
Entry
entry
是配置模块的入口,可抽象成输入Webpack
执行构建的第一步将从入口开始搜寻及递归解析出所有入口依赖的模块。
entry
不是必选项,其默认值为./src/index.js
entry
的配置有多种形式:字符串,数组,对象,函数.可以根据不同的场景进行选择.
字符串
直接传入文件路径就可以
module.exports = {
entry:'./src/index.js',
}
数组
传入一个数组的作用是将多个资源预先合并,在打包的时候Webpack会将数组中最后一个元素作为实际入口路径
module.exports = {
entry:['babel-polyfill','./src/index.js'],
}
//等同于
module.exprots = {
entry:'./src/index.js'
}
//index.js文件
import 'babel-polyfill'
对象
如果要实现多入口,则必须使用对象
对象的属性(key)是chunk name
,属性值(value)是入口路径
module.exports = {
entry:{
//chunk name 为index,入口路径为 ./src/index.js
index:'./src/index.js',
//chunk name 为lib,入口路径为 ./src/lib.js
lib:'./src/lib.js'
}
}
对象属性值也可以为数组
module.exports = {
entry:{
//此处数组的功能跟entry值为数组时的功能一样--预合并
index:['babel-polyfill','./src/index.js'],
lib:'./src/lib.js'
}
}
函数
用函数定义入口时,只要返回上面介绍的任何配置形式即可
module.exports = {
//返回字符串
entry:() => './src/index.js',
//返回对象
entry:() => {
index:'./src/index/.js',
lib:'./src/lib.js',
}
}
我们可以在函数里添加一些动态的逻辑获取工程入口.同时也支持返回一个Promise
对象进行异步操作
module.exports = {
entry:() => new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('./src/index.js');
},1000)
})
}
文章内容整理于:《深入浅出 Webpack》、《Webpack实战:入门、进阶与调优》与Webpack官网
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现