多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 插件 大多数人使用 Babel 的内建预设就足够了,不过 Babel 提供了更多更细粒度的能力。 `@babel/preset-*` 就是一些预先配置好的插件的集合,如果你想要做一些不一样的事情你会手动去设定插件,这和使用预设几乎完全相同。 ```js { "plugins": [ - "transform-es2015-classes" + ["transform-es2015-classes", { "loose": true }] // "宽松"模式,通过放弃一些标准中的行为来生成更简化且性能更好的代码 ] } ``` # 自定义插件 **自定义插件原理:自定义的babel插件实际上是定义一个实例化的visitor对象,来处理一系列的AST节点,进而操作代码。** # Visitor 对象 babel在处理一个节点时,是以访问者的形式获取节点的信息,并进行相关的操作,这种操作是通过visitor对象实现的。 在visitor 中定义了处理不同节点的函数。 # 参考 * [官网-Babel 插件](http://babeljs.io/docs/plugins/) * [Babel 插件开发指南](https://github.com/brigand/babel-plugin-handbook/blob/master/translations/zh-Hans/README.md) * [《从 0 到 1 手写 babel》思路分享](https://juejin.cn/post/6962861837800964133) * [从零开始编写一个 babel 插件](https://juejin.im/post/5a17d51851882531b15b2dfc) * [写一个 babel 插件](https://cnodejs.org/topic/5a9317d38d6e16e56bb808d1)