Webpack配置中为什么entry用相对路径而output.path用绝对路径
Webpack entry与output.path路径规则差异说明
你提供的是基础的Webpack单入口配置,代码如下:
const path = require('path'); module.exports = { entry: './src/index.js', output: { filename: 'main.js', path: path.resolve(__dirname, 'dist'), }, };
entry支持相对路径的原因
- entry的相对路径默认是相对于Webpack的
context配置项(默认值为执行webpack命令的工作目录),Webpack内部会自动完成相对路径到绝对路径的转换,不需要开发者手动拼接,简化配置编写。 - 官方并没有强制要求entry只能使用相对路径,你也可以传入绝对路径,只是相对路径写法更简洁,符合大部分项目的配置习惯。
output.path必须使用绝对路径的原因
- Webpack的文件输出逻辑依赖Node.js原生的文件系统API,这类API对输出路径的准确性要求极高,使用绝对路径可以完全避免路径歧义。
- 如果允许使用相对路径,输出位置会跟随执行webpack命令的工作目录变化,比如你在项目根目录执行打包和在src子目录执行打包,相对路径对应的实际存储位置完全不同,很容易出现产物丢失、生成到错误目录的问题。强制要求绝对路径可以100%锁定输出目录的位置,不管你在哪个工作目录执行打包命令,产物都会输出到固定位置。
你配置中使用的path.resolve(__dirname, 'dist')是标准写法,__dirname是Node.js内置变量,指向当前配置文件所在的目录,拼接后得到的就是项目dist目录的绝对路径,完全符合官方规范。
内容的提问来源于stack exchange,提问作者Subrato Pattanaik
相关产品推荐
相关产品推荐

