Webpack 打包---流程和loader

本文探讨了前端模块化的必要性,详细介绍了Webpack的配置文件、工作模式,并详细解析了Webpack的构建流程。重点讲解了加载器(loader)的作用,包括CSS资源处理的css-loader和style-loader,文件资源加载的file-loader和url-loader,以及如何手写markdown-loader。Webpack通过loader将不同类型的资源转换为JavaScript模块,实现前端资源的模块化管理和打包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么要模块化?

  • ES Modules 存在环境兼容问题
  • 模块文件过多,网络请求频繁
  • 所有的前端资源都需要模块化
    主流模块打包工具:webpack(适用于大型应用)、parcel(小型应用,快速开发测试demo)、rollup(适用于单模块开发)

webpack 配置文件

webpack.config.js

module.exports = {
   
  entry: './src/index.js', // 入口文件:相对路径不能省略 ./
  output: {
    // 输出配置
    filename: 'bundle.js', // 打包后的文件名
    path: path.join(__dirname, 'dist') // 打包输出路径:需要绝对路径
  },
}

webpack 的工作模式: mode

  • production 生产模式:打包、压缩代码
  • development 开发模式:优化打包效率,添加调试辅助
  • none 运行最原始的打包,不会做额外的处理

webpack构建流程

webpack是运行在nodejs环境下,配置文件遵循commonjs规范。其配置文件webpack.config.js导出一个object/function/promise/array。 Webpack在启动后,会从entry开始,递归解析entry依赖的所有Module,每找到一个Module,就会根据Module.rules里配置的Loader规则进行相应的转换处理,对Module进行转换后,再解析出当前Module依赖的Module,这些Module会以entry为单位进行分组,即为一个Chunk。因此一个Chunk,就是一个entry及其所有依赖的Module合并的结果。最后Webpack会将所有的Chunk转换成文件输出Output。在整个构建流程中,Webpack会在恰当的时机执行Plugin里定义的逻辑,从而完成Plugin插件的优化任务。其流程如下:

  1. 配置初始化
    webpack会首先读取配置文件,执行默认配置

  2. 编译前准备
    webpack 会实例化compiler,注册plugins、resolverFactory、hooks。

  3. reslove前准备
    webpack 实例化compilation、NormalModuleFactory和ContextModuleFactory

  4. reslove流程
    解析文件的路径信息以及inline loader和配置的loader合并、排序

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

michael_yqs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值