美文网首页
Babel 预设

Babel 预设

作者: 前白 | 来源:发表于2021-07-13 23:17 被阅读0次

本节我们来学习 Babel 中的预设 Presets。如果我们不想手动的组合插件,可以使用 preset 作为 Babel 插件的组合,或者共享 options 配置。

Babel7.8 官方的插件和预设有一百多种,如果我们一个个学习那需要大量的时间。但是我们也没必要全部学习,因为在实际使用中,常用的预设和插件也只有那几个,我们重点掌握这些常用的即可,掌握后这样其他的插件和预设就变得简单啦。

官方Preset

官方针对常用的环境编写了一些 preset,如下所示:

  • @babel/preset-env
  • @babel/preset-flow
  • @babel/preset-react
  • @babel/preset-typescript

这几个 preset 是社区维护的,可以通过 npm 命令下载。我们可以根据项目需要来下载使用,例如一个普通的 vue 项目,Babel 的官方预设中,只需要配一个 @babel/preset-env 就可以啦。

Stage-X实验预设

stage-x 预置中的语法转换会随着被批准为 JavaScript 新版本的组成部分而进行相应的改变(例如 ES6/ES2015)。

TC39 将提案分为以下几个阶段:

  • Stage 0 – 设想(Strawman):只是一个想法,可能有 Babel 插件。
  • Stage 1 – 建议(Proposal):这是值得跟进的。
  • Stage 2 – 草案(Draft):初始规范。
  • Stage 3 – 候选(Candidate):完成规范并在浏览器上初步实现。
  • Stage 4 – 完成(Finished):将添加到下一个年度版本发布中。

创建preset

如果我们需要创建一个自己的 preset,只需导出一份配置即可。

示例:

可以是一份插件数组,例如:

module.exports = function() {
  return {
    plugins: [
      "pluginA",
      "pluginB",
      "pluginC",
    ]
  };
}

preset 可以包含其他的 preset,以及带有参数的插件:

module.exports = () => ({
  presets: [
    require("@babel/preset-env"),
  ],
  plugins: [
    [require("@babel/plugin-proposal-class-properties"), { loose: true }],
    require("@babel/plugin-proposal-object-rest-spread"),
  ],
});

预设的路径

如果 preset 在 npm 上,我们可以输入 preset 的名称,babel 将检查是否已经将其安装到 node_modules 目录下:

{
  "presets": ["babel-preset-myPreset"]
}

或者还可以指定指向 preset 的绝对或相对路径,如下所示:

{
  "presets": ["./myProject/myPreset"]
}

Preset的短名称

如果 preset 名称的前缀为 babel-preset-,我们可以使用它的短名称,也就是省略 babel-preset- 前缀。

示例:

例如 babel-preset-myPreset 短名称为 myPreset:

{
  "presets": [
    "babel-preset-myPreset", // 相当于myPreset
    "myPreset"
  ]
}

这也适用于带有冠名(scope)的 preset:

{
  "presets": [
    "@org/babel-preset-name", // 相当于@org/name
    "@org/name" 
  ]
}

Preset 的排列顺序

preset 是逆序排列的,也就是从后往前排序。

示例:

我们来看下面这个例子:

{
  "presets": [
    "a",
    "b",
    "c"
  ]
}

执行顺序为 c、b 、 a,从后往前。这主要是为了确保向后兼容,由于大多数用户将 "es2015" 放在 "stage-0" 之前。

Preset的参数

插件和 preset 都可以接受参数,参数由插件名和参数对象组成一个数组,可以在配置文件中设置。

如果不指定参数,下面这几种形式都是一样的:

{
  "presets": [
    "presetA",
    ["presetA"],
    ["presetA", {}],
  ]
}

要指定参数,请传递一个以参数名作为键(key)的对象,例如:

{
  "presets": [
    ["@babel/preset-env", {
      "loose": true,
      "modules": false
    }]
  ]
}

相关文章

  • Babel 预设

    本节我们来学习 Babel 中的预设 Presets。如果我们不想手动的组合插件,可以使用 preset 作为 B...

  • Babel 预设

    本节我们来学习 Babel 中的预设 Presets。如果我们不想手动的组合插件,可以使用 preset 作为 B...

  • Babel 6 升级到 Babel 7

    Babel 6 到 Babel 7 Babel 是个从开发环境到生产环境的中间环境,提供大而全的插件和预设配置,由...

  • Babel--Preset(预设)

    preset是babel插件的集合,甚至可以作为可以共享的 options[https://www.babeljs...

  • 一文带你了解babel-preset-env

    相信很多人都和我一样,刚接触babel的时候都是使用 babel-preset-es2015 这个预设套餐的,但是...

  • vue视频教程系列第四节-预设介绍

    今天这节主要讲在搭建vue时的预设的各选项--我们平常经常用到的预设: 1.Babel=> 转换工具,将ES6转换...

  • babel自定预设-js-v1.0.0

    #创建预设? 导出一个配置 设置预设选项预设的读取顺序是从后往前 设置插件选项根据自己的需要,使用一些插件 #使用...

  • babel配置及插件注解

    babel插件 @babel/cli @babel/core @babel/preset-env @babel/p...

  • babel插件入门-AST

    目录 Babel简介 Babel运行原理 AST解析 AST转换 写一个Babel插件 Babel简介 Babel...

  • webpack学习四(babel)

    babel-loader安装 npm i babel-loader @babel/core @babel/pres...

网友评论

      本文标题:Babel 预设

      本文链接:https://www.haomeiwen.com/subject/pdjepltx.html