插件 · Babel 中文文档

Babel 插件通关秘籍 深入探究 babel 编译原理,学完可以写任何 babel 插件。我们会进行大量的实战,最后还会手写一个简易的 babel。 阅读详情

Babel 是一个编译器(输入源码 => 输出编译后的代码)。就像其他编译器一样,编译过程分为三个阶段:解析、转换和打印输出。

现在,Babel 虽然开箱即用,但是什么动作都不做。它基本上类似于 const babel = code => code; ,将代码解析之后再输出同样的代码。如果想要 Babel 做一些实际的工作,就需要为其添加插件。

除了一个一个的添加插件,你还可以以 preset 的形式启用一组插件。

📖 去Js中文网 -前端进阶资源教程,上查看本手册体验更佳

转换插件

这些插件用于转换你的代码。

转换插件将启用相应的语法插件,因此你不必同时指定这两种插件。

ES3
ES5
ES2015
ES2016
ES2017
ES2018
Modules
Experimental

Js中文网 - 前端进阶资源教程 www.javascriptC.com ,Babel中文文档
一个致力于帮助开发者用代码改变世界为使命的平台

Minification

查看我们 minifier based on Babel 插件!

这些插件都在 minify 仓库中。

React
其他

语法插件

这些插件只允许 Babel 解析(parse) 特定类型的语法(而不是转换)。

注意:转换插件会自动启用语法插件。因此,如果你已经使用了相应的转换插件,则不需要指定语法插件。

或者,你也可以通过 Babel 解析器传递任何 plugins 参数 :

Your .babelrc:

 json
{
  "parserOpts": {
    "plugins": ["jsx", "flow"]
  }
}


Js中文网 - 前端进阶资源教程 www.javascriptC.com ,Babel中文文档
一个致力于帮助开发者用代码改变世界为使命的平台

插件/Preset 路径

如果插件再 npm 上,你可以输入插件的名称,babel 会自动检查它是否已经被安装到 node_modules 目录下

 json
{
  "plugins": ["babel-plugin-myPlugin"]
}


你还可以指定插件的相对/绝对路径。

 json
{
  "plugins": ["./node_modules/asdf/plugin"]
}


插件的短名称

如果插件名称的前缀为 babel-plugin-,你还可以使用它的短名称:

 js
{
  "plugins": [
    "myPlugin",
    "babel-plugin-myPlugin" // 两个插件实际是同一个
  ]
}


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

 js
{
  "plugins": [
    "@org/babel-plugin-name",
    "@org/name" // 两个插件实际是同一个
  ]
}


插件顺序

插件的排列顺序很重要。

这意味着如果两个转换插件都将处理“程序(Program)”的某个代码片段,则将根据转换插件或 preset 的排列顺序依次执行。

  • 插件在 Presets 前运行。
  • 插件顺序从前往后排列。
  • Preset 顺序是颠倒的(从后往前)。

例如:

 json
{
  "plugins": ["transform-decorators-legacy", "transform-class-properties"]
}


先执行 transform-decorators-legacy ,在执行 transform-class-properties。

重要的时,preset 的顺序是 颠倒的。如下设置:

 json
{//JS中文网 - 前端进阶资源教程 https://javascriptc.com
  "presets": ["es2015", "react", "stage-2"]
}


将按如下顺序执行:stage-2、react 然后是 es2015。

这主要的是为了确保向后兼容,因为大多数用户将 “es2015” 排在 “stage-0” 之前。有关详细信息,请参阅 notes on potential traversal API changes。

Js中文网 - 前端进阶资源教程 www.javascriptC.com ,Babel中文文档
一个致力于帮助开发者用代码改变世界为使命的平台

插件参数

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

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

 json
{
  "plugins": ["pluginA", ["pluginA"], ["pluginA", {}]]
}


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

 json
{
  "plugins": [
    [
      "transform-async-to-module-method",
      {//JS中文网 - 前端进阶资源教程 https://javascriptc.com
        "module": "bluebird",
        "method": "coroutine"
      }
    ]
  ]
}


preset 的设置参数的工作原理完全相同:

 json
{
  "presets": [
    [
      "env",
      {
        "loose": true,
        "modules": false
      }
    ]
  ]
}


插件开发

请参考 babel-handbook 学习如何创建自己的插件。

一个简单的用于反转名称顺序的插件(来自于首页):

 js
export default function() {
  return {
    visitor: {
      Identifier(path) {
        const name = path.node.name;
        // reverse the name: JavaScript -> tpircSavaJ
        path.node.name = name
          .split("")
          .reverse()
          .join("");
      },
    },
  };
}


推荐阅读:

领略前端前沿,关注IT平头哥联盟,做有温度的攻城狮!,公众号:honeyBadger8

来源:Js中文网 - 前端进阶资源教程
链接:https://www.javascriptc.com/docs/babel-manual/plugins

嵌入式存储入门:Emmc控制器与设备工作原理全解析(附Synopsys/Arasan架构图) 本文深入解析了嵌入式系统中Emmc控制器与设备的工作原理,重点剖析了其作为CPU与存储设备桥梁的核心架构。通过对比Synopsys和Arasan两家主流IP厂商的控制器设计,详细阐述了DMA引擎与FIFO缓冲模块如何协同工作以提升数据传输效率,并提供了从硬件PCB布局到驱动调试的实战指南,帮助硬件工程师与开发者优化系统性能。 阅读详情

相关推荐

地图坐标系大全:常用地图坐标系详解与转换指南

地图坐标系是用于描述地图上位置的数学模型。它可以用来表示地球表面上的任意一个点,使得这个点的位置可以在地图上精确定位。不同的地图坐标系采用不同的基准面和投影方式,因此会有不同的坐标系参数,不同的坐标系之间也需要进行坐标转换。在地图制图、导航、GIS等领域中,地图坐标系是一个非常重要的概念。

weixin_39888010的博客 1万+

Babel 插件开发手册(官方)

这篇文档涵盖了如何创建 Babel 插件等方面的内容。 这本手册提供了多种语言的版本,查看 自述文件 里的完整列表。 目录 介绍 基础 抽象语法树(ASTs) Babel 的处理步骤 解析 词法分析 语法分析 转换 生成 遍历 Visitors(访问者) Paths(路径) Paths in Visitors(存在于访问者中的路径) State(状态) Scopes(作用域) B...

weixin_33826609的博客 4870

Ubuntu中交叉编译armadillo库

网上关于交叉编译armdillo库比较少,借鉴了一些但是在前几天编译时总是磕磕绊绊,于是写一个详细的编译过程。交叉编译armdillo库包含两个步骤:交叉编译依赖库和交叉编译armdillo库。

weixin_39813867的博客 1879

Babel入门·Babel 中文文档

Babel 是一个 JavaScript 编译器。Babel 是一个工具链,主要用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。下面列出的是 Babel 能为你做的事情:语法转换,通过 Polyfill 方式在目标环境中添加缺失的特性 (通过 @babel/polyfill 模块),源码转换 (codemods,Js中文网 www.javascriptc.com)

Js中文网 - www.javascriptc.com 2079

信息奥赛课课通(C++)p154-1近似排序

试题描述 读入一对正整数,将这两个数之间(包括这两个数本身)的所有数按下述特别规则排序后输出,该特别规则是按两数倒过来的值进行比较决定其大小,如30倒过来为3,29倒过来为92,则29大于30. 输入要求 1行,包含两个用空格隔开的自然数,这两个自然数给出了待排序数的范围,其中1≤第一个数≤第二个数≤999999999,两个数之差不超过100. 输出要求 输出排序后的数据,每行输出...

mengdicfm的博客 7287

ArcGIS数据处理必备技能:从地理坐标到UTM投影的面转栅格完整流程

本文详细介绍了在ArcGIS中从地理坐标到UTM投影的面转栅格完整流程,包括坐标系转换、像元大小设置及质量控制等关键步骤。通过实战案例和Python脚本示例,帮助用户解决常见问题并优化数据处理效率,特别适合需要精确GIS数据分析的专业人士。

weixin_42628688的博客 180

使用指南 · Babel 中文文档

Babel 工具链是由大量的工具组成的,无论你是 “最终用户” 还是在集成 Babel,这些工具都简化了 Babel 的使用。本文是对这些工具的使用方法的快速介绍,你可以在文档的 “用法” 章节了解到更多信息,Js中文网 www.javascriptc.com

Js中文网 - www.javascriptc.com 605

Open3D KD-tree的使用【2025最新版】

Open3d使用FLANN构建KDTree以便进行快速最近邻检索。博客长期更新,本文最近一次更新时间为:2025年1月1日,代码已同步更新至Open3D 0.18.0版本。

点云侠的博客 40万+

bebel系列- 插件开发

bebel系列-插件开发我们知道babel的编译流程分为三步parse、transform、generate,每一步都暴露了一些api出来。我们主要学习的就是,,,,这五个包的api的使用。

老司机的后备箱 1263

MATLAB与图像处理(一):图像中结构张量的求法(Structure Tensor)

1.结构张量的作用:       能够区分图像中的平坦区域,边缘,角点; 2.图像中的结构张量的定义    1)是一个矩阵;    2)与图像的水平,垂直梯度有关,定义如下: 在MATLAB中,可以用如下语句求解:[Ix,Iy]=gradient(Image); 3)求出结构张量矩阵的行列式,和迹(矩阵对角线之和)   行列式:K=det(E);   迹:  

wenyusuran的专栏 5242

【2025国赛C题】高教社杯全国大学生数学建模竞赛C题思路+代码+论文

【2025国赛C题】高教社杯全国大学生数学建模竞赛C题思路+代码+论文

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 2905

babel入门开发(如何开发babel插件)

前端babel插件开发入门级教学

weixin_43589827的博客 1775

【局部规划模块曲线算法】曲线平滑介绍

本文先对轨迹平滑问题做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容(1)适合给移动机器人运动的路径【满足运动学,高阶平滑】(2)高阶的运动学不能够突变的【至少三阶的加速度不能突变,最好四阶的jerk和五阶的snap也不能突变】(3)在转弯的地方不会停下来(4)加减速均衡,节省能量(5)节省时间的。

qq_35635374的博客 5718

Eclipse 3.5中文汉化包下载,在线更新

 Eclipse 是一款很好的IDE环境,功能完整而成熟。它使用 Java 语言开发,而且属于开源项目,网上充足的插件,保证了其强大的可扩展性。Eclipse 的语言包也是以插件的形式来提供的。很可惜的是,从3.3版本开始,Eclipse 官方不再提供语言包下载。无意中发现了 Eclipse 的一个开源项目:Babel ,它依靠全球开源爱好者的力量,来翻译 Eclipse 及其插件。

seawt的专栏 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Vue-docs-zh-cn项目概览:15个Vue生态工具中文文档合集终极指南 [特殊字符]

想要快速掌握Vue.js生态系统的完整工具链吗?Vue-docs-zh-cn项目为你提供了**15个Vue生态工具的中文文档合集**,这是中文开发者学习Vue生态系统的宝贵资源库!无论你是Vue.js的初学者还是有经验的开发者,这个项目都能帮助你快速查阅和理解Vue生态系统中各种重要工具的用法和配置。 ## 📚 项目核心价值与定位 Vue-docs-zh-cn是一个集中存放Vue官方维护库中

gitblog_00573的博客 298

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

一文教你构建自己的library以及webpack优化和npm版本控制

介绍 构建自己的UI库,你必须要对一款打包工具熟悉(webpack, gulp或者grunt), 本文以webpack为例。 github地址 github.com/reming0227/… 可以点个star,谢谢! 这套UI费了几个月时间和很多心血,现在已经趋于完善,你完全可以在你的生产环境中试着使用。对于性能的考虑,以及js/css压缩,按需引入等等都已经很完善。这套UI库富含移动端可能碰...

weixin_34313182的博客 194

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

如何快速使用Vue-docs-zh-cn:Vue CLI插件中文文档全解析

Vue-docs-zh-cn是Vue CLI插件的中文文档项目,虽然该项目已不再维护,但对于需要查阅Vue CLI插件使用方法的开发者来说,仍具有重要的参考价值。通过这份中文文档,新手和普通用户可以轻松掌握Vue CLI各类插件的配置与使用技巧,快速上手Vue项目开发。 ## 快速获取Vue-docs-zh-cn项目 要开始使用Vue-docs-zh-cn,首先需要将项目克隆到本地。打开终端,

gitblog_00491的博客 1193

vue安装及环境搭建

vue项目在pycharm里运行需要安装一个插件,打开settings,找到plugins,里面搜索vue.js,点击安装。 vue安装 先安装node.js npm install -g @vue/cli vue create my-project cd my_project npm run serve npm install axios 中间的...

ZHOUXIN0426的博客 235

Babel 是什么?· Babel 中文文档

Babel 是一个工具链,主要用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。下面列出的是 Babel 能为你做的事情……Js中文网 www.javascriptc.com

Js中文网 - www.javascriptc.com 1412

Babel 插件官方文档

Babel 插件手册 这篇文档涵盖了如何创建 Babel 插件等方面的内容。. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rz97CkRJ-1585659834039)(https://licensebuttons.net/l/by/4.0/80x15.png)] 这本手册提供了多种语言的版本,查看 自述文件 里的完整列表。 目录 介绍 基础 抽象语法树(A...

huahua的博客 1492

升级到 Babel 7 · Babel 中文文档

Refer users to this document when upgrading to Babel 7.Because not every breaking change will affect every project, we've sorted the sections by the likelihood of a change breaking tests when upgrading.

Js中文网 - www.javascriptc.com 2781

升级到 Babel 7 (API) · Babel 中文文档

Refer users to this document when upgrading to Babel 7.Also check out the [v7-migration guide][1] for other user-level changes.

Js中文网 - www.javascriptc.com 1892

Babel 插件手册

Babel 是一个通用的多功能的 JavaScript 编译器。此外它还拥有众多模块可用于不同形式的静态分析。静态分析是在不需要执行代码的前提下对代码进行分析的处理过程 (执行代码的同时进行代码分析即是动态分析)。静态分析的目的是多种多样的, 它可用于语法检查,编译,代码高亮,代码转换,优化,压缩等等场景。你可以使用 Babel 创建多种类型的工具来帮助你更有效率并且写出更好的程序。在 Twitter 上关注,第一时间获取更新。

YZC1892的博客 1065

Babel是什么?Babel到底可以用来干嘛___一文带你从零开始认识Babel

引入 在此之前或许你已经用过babel,也许听说过什么 babel-loader babel-core、babel-cli、babel-plugin-…、babel-preset-env 反正各种乱七八糟的做项目随便用一一下就可以了,对他只有个一知半解,甚至不知道他到底是干什么的,反正项目要用,照着用就行了,至少博主之前的状态是这样,如果只对他有个一知半解甚至都不了解,那么项目出bug了你都不知道怎么去调试,只能复制–>粘贴–>百度。 基于此,写下自己对Babel的理解。 Babel是什么? 我

Sumshine12.5 2万+

Babel文档

介绍 Babel 是一个通用的多用途 JavaScript 编译器。通过 Babel 你可以使用(并创建)下一代的 JavaScript,以及下一代的 JavaScript 工具。 作为一种语言,JavaScript 在不断发展,新的标准/提案和新的特性层出不穷。 在得到广泛普及之前,Babel 能够让你提前(甚至数年)使用它们。 Babel 把用最新标准编写的 JavaScript ...

Yang Yong 的博客 745

预设(Presets) · Babel 中文文档

不想自己动手组合插件?没问题!preset 可以作为 Babel 插件的组合,甚至可以作为可以共享的 options 配置。

Js中文网 - www.javascriptc.com 1472
上一篇: 编辑器 · Babel 中文文档
下一篇: 预设(Presets) · Babel 中文文档
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值