webpack 入门
介绍
webpack 是一个模块打包器,它本身主要打包 JavaScript 模块,结合它的生态中的一些 loader 可以实现对很多其他资源的打包,例如 less、sass、图片、es6 转 es5、.vue 等等文件资源都可以。
使用 webpack,我们最终就能实现类似于 VueCLI 这个工具提供给我们的功能:
- 打包 JavaScript
- 打包 css
- 打包 图片
- 打包 less
- 打包 .vue 资源
- ....
- 开发阶段的 Web 服务
- 代码热更新
- 打包部署命令
- 。。。。
我们之所以能使用到 VueCLI 这么方便的工具,一切都归功于 webpack。
webpack 出来之前,还有一些别的构建工具:
- grunt
- gulp
- 百度的 fis
- PARCEL
- rollup
- ......
现在 webpack 已经被各大主流前端框架作为自己的脚手架工具的基层,例如:
- Vue:Vue CLI
- React:crate-react-app
- Angular:angular-cli
- 。。。。
为什么要学习 webpack?
如果你需要定制这些脚手架工具,那么最好了解一点儿 webpack 相关的内容,例如对项目进行打包优化,配置开发工具模式,。。。。一些更高级的使用方式。

打包 -> 打 包结果 -> 浏览器就可以识别运行。
- 官网:https://webpack.js.org/
- 官方教程:https://webpack.js.org/guides/
- 官方 API 参考文档:https://webpack.js.org/api/
- 官方的中文文档链接: https://webpack.docschina.org/
- GitHub:https://github.com/webpack/webpack
Hello World
目标:体验 webpack 的使用
一、准备
1、创建 demo1 练习项目
2、创建 index.js
现在必须叫
index.js,之后可以通过配置文件修改
3、创建 foo.js
4、创建 index.html
二、安装并配置 webpack 到项目中
1、创建 package.json 文件(保存安装包的依赖信息)
2、安装 webpack 到项目的开发依赖中
# yarn add --dev webpack webpack-cli 或者 yarn add -D webpack webpack-cli
# npm install -D webpack webpack-cli
npm install --save-dev webpack webpack-cli
建议把开发工具打包相关的包的依赖信息保存到
devDependencies中,其实就是一个归类,都安装包到项目中,有利于阅读,更清晰。
3、将 package.json 的 scripts 中新增

三、打包
npm run build
npm 就会找到 package.json 中的
build配置项,运行 webpak 构建打包。
正确的话你应该可以看到:
$ npm run build
> demo1@1.0.0 build C:\Users\LPZ\Desktop\FE88\webpack-demos\demo1
> webpack
Hash: 893a9c400f1f92ab6974
Version: webpack 4.41.2
Time: 96ms
Built at: 2019-11-22 12:19:00
Asset Size Chunks Chunk Names
main.js 976 bytes 0 [emitted] main
Entrypoint main = main.js
[0] ./src/index.js + 1 modules 95 bytes {0} [built]
| ./src/index.js 34 bytes [built]
| ./src/foo.js 61 bytes [built]
WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/
webpack 默认会找到 src/index.js 作为打包的入口,然后从入口分析所有的依赖:
- a 依赖了 b
- b 依赖了 c
- c 依赖 d
- 。。。。
- 所有依赖的文件
将它们编译构建处理,最终生成一个默认名字叫 main.js 文件写入 dist 目录。
四、加载执行
在你 HTML 文件中加载打包的结果 dist/main.js,访问测试。
配置文件
webpack 打包的入口和出口具有默认规则,如果想要自定义,或者其他一些更高级功能配置,那么我们就需要使用它的配置文件了。
1、在项目根目录创建 webpack.config.js 并写入
/**
* webpack 配置文件
* 该文件必须导出一个对象
* 对象中声明 webpack 的配置项
* 注意:webpack 是基于 Node.js 开发运行的一个构件工具,它的打包运行的时候会来执行这个文件得到导出的配置对象
* 所以你要知道:这里使用的都是 Node.js 中的代码相关语法
*/
const path = require("path");
module.exports = {
/**
* 入口配置
*/
entry: "./src/index.js",
/**
* 出口配置
*/
output: {
// __dirname 可以动态的获取当前文件所属目录的绝对路径
// path 是 Node 中一个专门处理路径的一个模块
// 它的 join 方法转么用来拼接路径,
path: path.join(__dirname, "./dist"),
// path: 'C:\\Users\\LPZ\\Desktop\\FE88\\webpack-demos\\demo1\\dist', // 打包的结果目录,默认是 dist,必须是一个绝对路径
// path: './dist/', // 打包的结果目录,默认是 dist,必须是一个绝对路径
filename: "bundle.js", // 打包的结果文件名,默认叫 main.js
},
};
2、然后修改 package.json 文件中的 build 配置项(非必须)

webpack 会自动加载执行名字叫
webpack.config.js的配置文件,如果你使用了别的名字,那么就在这里自定义.
3、打包
npm run build
关于 npm scripts
我们安装到项目中的 webpack,手动的方式需要这样来使用:
打包模式 mode
mode 用来配置打包模式,有两种模式可选:
- development 开发模式
- 更快的编译速度
- production 生产模式
- 相比开发模式构建速度慢,拥有更好的编译结果
- 例如代码压缩
建议开发过程使用开发模式,发布上线使用生产模式。
