webpack是啥?

webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。(目前最流行的)

开发时,我们会使用框架(React、Vue),ES6 模块化语法,Less/Sass 等 css 预处理器等语法进行开发。

这样的代码要想在浏览器运行必须经过编译成浏览器能识别的 JS、Css 等语法,才能运行。

所以我们需要打包工具帮我们做完这些事。

除此之外,打包工具还能压缩代码、做兼容性处理、提升代码性能等。

基本使用

Webpack 是一个静态资源打包工具。

它会以一个或多个文件作为打包的入口,将我们整个项目所有文件编译组合成一个或多个文件输出出去。

输出的文件就是编译好的文件,就可以在浏览器段运行了。

功能介绍

Webpack 本身功能是有限的:

  • 开发模式:仅能编译 JS 中的 ES Module 语法
  • 生产模式:能编译 JS 中的 ES Module 语法,还能压缩 JS 代码

开始使用

1. 资源目录

1
2
3
4
5
6
webpack_code # 项目根目录(所有指令必须在这个目录运行)
└── src # 项目源码目录
├── js # js文件目录
│ ├── a.js
│ └── b.js
└── main.js # 项目主文件

2. 创建文件

3. 下载依赖

打开终端,来到项目根目录。运行以下指令:

  • 初始化package.json
1
npm init -y

此时会生成一个基础的 package.json 文件。

需要注意的是 package.jsonname 字段不能叫做 webpack, 否则下一步会报错

  • 下载依赖
1
npm i webpack webpack-cli -D

4. 启用 Webpack

  • 开发模式
1
npx webpack ./src/main.js --mode=development
  • 生产模式
1
npx webpack ./src/main.js --mode=production

npx webpack: 是用来运行本地安装 Webpack 包的。

./src/main.js: 指定 Webpackmain.js 文件开始打包,不但会打包 main.js,还会将其依赖也一起打包进来。

--mode=xxx:指定模式(环境)。

5. 观察输出文件

默认 Webpack 会将文件打包输出到 dist 目录下

基本配置

5 大核心概念

  1. entry(入口)

    指示 Webpack 从哪个文件开始打包

  2. output(输出)

    指示 Webpack 打包完的文件输出到哪里去,如何命名等

  3. loader(加载器)

    webpack 本身只能处理 js、json 等资源,其他资源需要借助 loader,Webpack 才能解析

  4. plugins(插件)

    扩展 Webpack 的功能

  5. mode(模式)

    主要由两种模式:

    • 开发模式:development
    • 生产模式:production

Webpack 配置文件

在项目根目录下新建文件:webpack.config.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Node.js的核心模块,专门用来处理文件路径
const path = require("path");

module.exports = {
// 入口
// 相对路径和绝对路径都行
entry: "./src/main.js",
// 输出
output: {
// path: 文件输出目录,必须是绝对路径
// path.resolve()方法返回一个绝对路径
// __dirname 当前文件的文件夹绝对路径
path: path.resolve(__dirname, "dist"),
// filename: 输出文件名
filename: "main.js",
},
// 加载器
module: {
rules: [],
},
// 插件
plugins: [],
// 模式
mode: "",
};

Webpack 是基于 Node.js 运行的,所以采用 Common.js 模块化规范

详细配置

开发模式

生产模式