Webpack初体验:基础配置
1.前言
在笔者的印象里,从入门前端开始,用的构建工具好像一直是vite。
诚然,vite在中小型项目里,无论是启动速度 还是 模块热更新体验,都遥遥领先于webpack
但是,webpack在复杂项目的兼容性、插件生态方面有很大的优势。
相比于 Vite 主要依赖 Rollup 进行生产构建,Webpack 不仅提供了 更灵活的构建生命周期(如编译、优化、打包、输出等阶段),还拥有 强大的插件机制,使得其在 复杂项目和企业级应用中 更具优势。
同时,我过去的学习过程更多是基于 页面拼接与功能实现,而缺少对 模块化构建和项目架构设计 的深度理解。因此,通过学习 Webpack,我希望能够进一步掌握 模块依赖分析、资源优化、按需加载等前端核心架构能力
因此,我开启了这个系列,旨在记录我的学习过程
fetch API 进阶用法仍在酝酿中,敬请期待 😄
2.Webpack是什么
Webpack 是一个模块打包器,它通过解析项目中的模块依赖关系,构建完整的依赖图(Dependency Graph),并最终将资源(JavaScript、CSS、图片等)统一打包为静态文件。
Webpack的核心以以下五个关键部分组成
1. Entry(入口)
- 作用: 指定打包的入口文件,Webpack 会从这个文件出发,构建整个依赖图。
- 常见配置:
1 |
|
2. Output(出口)
- 作用: 指定构建后文件的输出路径和文件名。
- 常见配置:
1 |
|
3. Loaders(加载器)
- 作用: 用于转换模块,让 Webpack 能识别除 JS 以外的文件,如 CSS、图片、字体等。
- 常见 Loaders:
babel-loader
:将 ES6+ 转换为 ES5。css-loader
:加载 CSS 文件。style-loader
:将 CSS 插入到 DOM 中。file-loader
:处理图片、字体等文件。
1 |
|
4. Plugins(插件)
- 作用: 扩展 Webpack 功能,比如优化打包、资源管理、注入环境变量等。
- 常见 Plugins:
HtmlWebpackPlugin
:自动生成 HTML 文件并引入打包后的 JS。MiniCssExtractPlugin
:分离 CSS 文件。TerserPlugin
:压缩 JS 代码。
1 |
|
5. Mode(模式)
- 作用: 决定构建模式,内置三种模式:
development
:开发模式,开启 Source Map,不压缩代码。production
:生产模式,自动优化、压缩代码。none
:不做任何优化,仅打包。
1 |
|
3*. 从0开始 webpack应用的创建到基本配置
webpack应用的创建
首先 我们创建项目文件夹
1 |
|
在这个项目文件夹中 第一步 我们需先创建package.json
1 |
|
pnpm 会快速生成基本package.json文件
随后 安装webpack(核心打包工具) 和 webpack-cli(命令行工具,用于执行 Webpack 命令)
1 |
|
为什么要
--save-dev
?
因为 Webpack 只在开发过程中使用,打包后的生产环境并不需要 Webpack 运行。
然后 在项目的根目录下 创建src文件夹
在src文件里 创建index.js 作为整个项目的入口文件
随便写点简单的js吧
然后 我们需要创建webpack的配置文件
1 |
|
然后我们就需要对这个配置文件进行编辑
首先 因为webpack默认采用CommonJS模块规范
我们需要使用这样的结构导出
1 |
|
还记得之前说过的入口文件吗
我们通常以相对路径来配置它
1 |
|
配置完入口 我们自然而然会想到 这个项目构建完的产物需要放在哪里 即出口
但是由于指定的是文件输出路径 必须使用绝对路径进行配置
这时候我们就需要用到node.js提供的path模块来提供绝对路径
1 |
|
注:多入口项目的写法这篇博客不会介绍 敬请期待
配置完这些 我们还需要让我们的包管理器能找到webpack
所以我们需要在package.json中加入
1 |
|
一个最基础的webpack应用就构建完成了
引入开发服务器 实现热重载
在开发过程中 我们肯定会对热重载有需求 但是前面部署的都是静态打包相关内容
于是我们今天更进一步 为我们的webpack应用安装webpack-dev-server
首先 安装相关依赖
1 |
|
然后 我们需要在webpack.config.js中加入devServer相关内容
1 |
|
为了方便启动 我们还需要在package.json里添加相关脚本
1 |
|
至此 我们的基本配置就完成了!
4. 写在最后
这篇文章只是一个开始,旨在帮助大家完成 Webpack 的基础配置与应用初体验。
但 Webpack 远不止于此。
在后续文章中,我将逐步深入,分两个方向继续分享我的 Webpack 学习过程:
- 应用实战: 从基础配置到多入口配置、插件集成、生产环境优化,带你一步步构建完整的 Webpack 项目。
- 原理剖析: 梳理 Webpack 的启动链路,从
pnpm run build
开始,到webpack.config.js
的完整解析过程,深入剖析 CLI 模块、Compiler 模块、Compilation 模块 的内部工作原理。
此外,关于 打包优化、模块分割、缓存策略 等高级优化方法,我也将陆续更新,敬请期待。
📦 项目源码: Webpack Demo - GitHub