认识Babel

251 阅读2分钟

定义

Babel 是一个现代Javascript语法的编译器,它是一个插件化的工具链,主要用于将采用ECMAScript 2015+ 语法编写的代码转换为向后兼容的Javascript语法,以便能够运行在当前和旧版本的浏览器或其他环境中。 2B6C3E75-4B91-4E49-867B-3D3D084964B8.png 下面列出的是babel能做的事情:

  • 新语法转换为旧语法
  • 通过Polyfill方式在目标环境中添加缺失的特性(通过第三方polyfill模块,如core-js
  • 源码转换(codemods)
  • 更多···(请查看这些视频以获得启发)

使用指南(适用于≥v7.x)

    所有的babel模块都是作为独立的npm包发布的,并且(从版本7开始)都是在 @babel 包范围下,其中babel的核心功能都包含在@babel/core包中,@babel/cli是一个能够在终端(CLI)使用的工具。

  1. CLI命令行的用法
    1. 安装@babel/core、@babel/cli: npm install --save-dev @babel/{core,cli,preset-env}
    2. 携带相关参数执行相关命令来实现编译文件、目录等操作,如: npx babel src --out-dir lib ,使用 env预设 解析 src 目录下的所有JavaScript文件,然后把每个文件输出到  lib 目录下(默认配置支持所有最新的≥Stage 3 的JavaScript特性)。
  2. 配置文件的用法
    1. 安装@babel/core、@babel/cli: npm install --save-dev @babel/{core,cli,preset-env}

    2. 对于v7.8.0 或更高版本,在项目根目录下新建一个名为 babel.config.json 的文件,并配置相关预设和插件,如果使用的是旧版本的babel,则文件名为 babel.config.js 。

      // package.json
      {
      
        "name": "my-package",
      
          "version": "1.0.0",
      
            "babel": {
      
              "presets": [... ],
      
              "plugins": [... ],
      
            }
      
      }
      
      
      // babel.config.json、.babelrc、.babelrc.json
      {
      
        presets: [...],
      
        plugins: [...]
      
      }
      
      
      // babel.config.[c|m]?js
      module.exports = function (api) {
      
        return {
      
          presets: [...],
      
          plugins: [...]
      
        }
      
      }
      
      
      // .babelrc.js
      module.exports = {
      
        presets: [...],
      
        plugins: [...]
      
      }
      
    3. 执行相关命令来实现编译文件、目录等操作,如:  npx babel src --out-dir lib ,使用 env预设 解析 src 目录下的所有JavaScript文件,然后把每个文件输出到  lib 目录下(默认配置支持所有最新的≥Stage 3的JavaScript特性)。

预设(Presets)

预设是一套预先设定的插件,常用的的预设如下: image.png

插件(Plugins)

插件是一个小型的JavaScript程序,是Babel 工具的基础形态,用于指导Babel如何对代码进行转换。可点击查看官方维护的插件列表

集成包(Integration Packages)

image.png

工具包(Tooling Packages)

image.png

辅助包(Helper Packages)

image.png