webpack使用说明
webpack 是一个现代 JavaScript 应用程序的静态模块打包器,是前端工程化必不可少的工具之一,以下是我的学习笔记整理。

前端框架开发基础
前端工程化
前端工程原则
- 模块化( js 、css 代码的复用)
- 组件化(现有的 UI 结构的复用)
- 规范化(目录结果划分、编码规范化、接口规范化、文档规范化、git 分支管理)
- 自动化(自动化构建、自动部署、自动化测试)
何为前端工程化
前端工程化即,在企业级的前端项目开发中,把前端开发所需的工具、技术、流程、经验等进行规范化、标准化。这样有利于前端开发自成体系,有一套标准的开发方案和流程。
前端工程化解决方案
早期:grunt 、gulp
目前主流: webpack、parcel、vite
初识 webpack
webpack是什么
webpack是前端项目工程化的具体解决方案
- 提供了友好的前端模块化开发(ejs、pug)
- 代码压缩混淆
- 处理语法兼容性(ES6,ES7,ES8,less,scss)
- 性能优化、实时编译等功能
提高开发效率和项目可维护性
安装与配置
1 | 1. 原始三大件 |
-D
是 --save-dev
的缩写,表示开发时依赖,只在项目开发阶段用到。
-S
是 --save
的缩写,表示运行时依赖,即项目打包发布运行时要用到。
1 | npm install webpack webpack-cli -D |
- 在项目根目录中创建 webpack.config.js 配置文件,初始化基本配置:
1 | module.exports = { |
- 在
package.json
文件的scripts
节点下,新增dev
脚本:
1 | "scripts" :{ |
- 在终端中运行
npm run dev
命令,即可启动 webpack 进行项目的打包构建
webpack.config.js 配置文件
webpack.config.js 是 webpack 的配置文件。webpack 在真正开始打包构建之前,会先读取这个配置文件,从而基于给定的配置,对项目进行打包。
webpack默认约定
- 默认打包入口文件为 src -> index.js
- 默认输出文件路径为 dist -> main.js
- 可以在webpack.config.js 配置文件中,通过entry节点指定打包入口,output节点指定打包出口
1 | const path = require('path') |
webpack-dev-server
类似于nodejs中的nodemon工具,每当修改源码,webpack会自动进行项目打包和构建
webpack-dev-server会将打包的js放到内存中,方便快速读写更改
安装webpack-dev-server
1 | npm install webpack-dev-server -D |
配置webpack-dev-server
- 修改
package.json -> scripts
的dev
命令:
1 | "scripts": { |
- 运行
npm run dev
命令,重新打包项目 - 浏览器访问
http://localhost:8080
地址,查看打包效果
devServer 节点
通过 webpack.config.js 文件的 devServer
节点对 webpack-dev-server 插件进行更多的配置。
1 | devServer: { |
html-webpack-plugin
- webpack中的HTML插件,类似于模板引擎插件
- 可以通过此插件自定制index.html页面的内容

webpack的loader
实际开发中,webpack只能打包处理js后缀模块,非js后缀结尾的模块,需要调用loader加载器才可以正常打包,比如
在webpack.config.js 的module -> rules 数组中,添加相应的规则:
css-loader
处理 css 相关文件less-loader
处理 less 相关文件url-loader
处理 图片等相关文件babel-loader
处理 webpack 无法处理的高级JS语法- babel 的使用需要在use后面添加一个 exclude 排除 node_modules目录下的JS文件
- 还需要创建一个 babel.config.js 的配置文件
打包发布
为何需要打包发布
- 开发环境下,打包生成的文件存放于内存中,无法得到最终打包生成的文件
- 开发环境下,打包生成的文件不会进行代码压缩和性能优化
配置打包
在 package.json 文件的 scripts 节点下,新增build命令如下:
1 | "scripts":{ |
把 JS 文件统一生成到 js 目录
在 webpack.config.js 配置文件的 output
节点中,进行配置:
1 | ouput: { |
把图片统一生成到 image 目录
修改 webpack.config.js 中的 url-loader
配置项,新增 outputPath
选项指定图片文件的输出路径:
1 | { |
自动清理 dist 目录下的旧文件
安装配置 clean-webpack-plugin
1 | npm install clean-webpack-plugin@3.0.0 -D |
在 webpack.config.js 文件中进行配置:
1 | const { CleanWebpackPlugin } = require('clean-webpack-plugin') |
企业级项目打包发布
企业级项目打包发布的流程更复杂:
- 生成打包报告,根据报告分析具体的优化方案
- Tree-Shaking
- 为第三方库启用 CDN 加载
- 配置组件的按需加载
- 开启路由懒加载
- 自定制首页内容
SourceMap
SourceMap 就是信息文件,存储着压缩混淆代码转换前的位置信息。
出错的时候,SourceMap 将直接显示出错的原始代码位置,极大方便后期的调试。
在 webpack.config.js 添加如下配置
1 | module.exports = { |
生产环境时,需要关闭该设置。
@的原理与好处
@ 表示 src 源代码目录,从外往里找, 不要使用 ../
配置方式: 在 webpack.config.js 中
1 | resolve: { |