← 返回目录

第 22 卷

第 22 / 26 卷日期:

Code block

1"scripts": { 2"build:js": "babel src --out-dir dist" // 将 src 目录下的 JS 文件转译后输出到

dist 目录 3}

执行转译命令: npm run build:js

(2)集成到 Webpack 等构建工具

在 Webpack 中通过 babel-loader 集成 Babel(更常用,适合项目工程化):

Code block

1// 安装依赖 2npm install --save-dev babel-loader

3// webpack.config.js 配置 4module.exports = {

5module: { 6rules: [

7{

8test: /\.js$/, //匹配所有JS文件
9exclude: /node_modules/, //排除node_modules目录(第三方依赖无需转译)
10use: "babel-loader", //使用babel-loader转译
11},
12],
13 },
14 };
  1. 关键配置说明

• targets:决定转译的程度,目标环境越旧,转译后的代码兼容性越好,但体积越大。可通过

browserl.ist 验证配置的兼容性范围。

  • useBuiltIns: "usage":按需引入 polyfill,避免全量引入导致的代码体积过大(推荐);

可选值还有 "entry"(在入口文件手动引入 core-js,全量加载目标环境所需 polyfill)和 false(不自动引入,需手动管理)。

  • corejs:指定 polyfill 库版本,必须与安装的 core-js 版本一致,否则会报错。
  1. 插件(Plugins)

(1)核心定位

插件是 Babel 转译的最小单元,每个插件仅负责转译一种或一类特定的语法特性(如箭头函数、解构赋值、class 语法等)。Babel 本身不具备转译能力,所有转译逻辑都由插件实现。

(2)分类

• 语法转译插件:负责将 ES6+ 语法转为 ES5(如 @babel/plugin-transform-arrow-

functions 转译箭头函数)。

• 语法提案插件:负责转译尚未成为 ES 标准的语法(如 @babel/plugin-proposal-class-

properties 转译 class 私有属性,属于 Stage 3 提案)。

• 工具类插件:负责辅助转译过程(如 @babel/plugin-transform-runtime 复用辅助代码,

减少重复)。

(3)用法

在 Babel 配置文件的 plugins 数组中配置,支持直接写插件名称(需先安装)或配置插件选项:

Code block

1// babel.config.js 2module.exports = {

3plugins: [ 4"@babel/plugin-transform-arrow-functions", // 转译箭头函数

5["@babel/plugin-proposal-decorators", { legacy: true }], // 转译装饰器,传入选项

6], 7};

(4)执行顺序

  • 插件按配置顺序从左到右执行。
  • 如果有插件的 before 或 after 选项,可调整执行时机(如在预设之前/之后执行)。
  1. 预设(Presets)

(1)核心定位

• @babel/preset-env:核心预设,用于转译 ES6+ 语法,可根据目标环境按需加载插件(最常

用)。

• @babel/preset-react:用于转译 React 的 JSX 语法,包含 @babel/plugin-

transform-react-jsx 等插件。

  • @babel/preset-typescript:用于转译 TypeScript 代码为 JavaScript。

• @babel/preset-es2015(已废弃):早期用于转译 ES2015 语法,现被

@babel/preset-env 替代。

(3)用法

在 Babel 配置文件的 presets 数组中配置,支持直接写预设名称(需先安装)或配置预设选项:

Code block

1// babel.config.js 2module.exports = {

3presets: [ 4["@babel/preset-env", { targets: { ie: 11 }, corejs: 3 }], // 配置 ES6+ 转

译,传入选项

5"@babel/preset-react", //转译JSX语法
6"@babel/preset-typescript", //转译TypeScript
7],
8 };

(4)执行顺序

• 预设按配置顺序从右到左执行(与插件相反)。例如上述配置中,先执行 @babel/preset-

typescript,再执行 @babel/preset-react,最后执行 @babel/preset-env。

• 原因:预设是“插件集合”,右侧预设(如 TypeScript 转译)的输出可能需要左侧预设(如 ES6+

转译)进一步处理。

  1. 核心区别总结
对比维度插件(Plugins)预设(Presets)
粒度最小单元,单个语法特性插件集合,一类语法特性
核心作用实现具体的转译逻辑批量引入插件,简化配置
执行顺序从左到右从右到左
全站分卷索引 · 26 卷
  1. 1第 1 卷
  2. 2第 2 卷
  3. 3第 3 卷
  4. 4第 4 卷
  5. 5第 5 卷
  6. 6第 6 卷
  7. 7第 7 卷
  8. 8第 8 卷
  9. 9第 9 卷
  10. 10第 10 卷
  11. 11第 11 卷
  12. 12第 12 卷
  13. 13第 13 卷
  14. 14第 14 卷
  15. 15第 15 卷
  16. 16第 16 卷
  17. 17第 17 卷
  18. 18第 18 卷
  19. 19第 19 卷
  20. 20第 20 卷
  21. 21第 21 卷
  22. 22第 22 卷
  23. 23第 23 卷
  24. 24第 24 卷
  25. 25第 25 卷
  26. 26第 26 卷