Babel 6预设的顺序是否重要?

时间:2016-07-27 18:15:27

标签: javascript babeljs

当我列出预设时,订单是否重要?

换句话说,以下.babelrc文件是否等效?

.babelrc#1

{
  "presets": ["es2015", "stage-2", "react"]
}

.babelrc#2

{
  "presets": ["react", "stage-2", "es2015"]
}

1 个答案:

答案 0 :(得分:40)

来自babeljs.io/docs/plugins:(截至2016年9月30日)

插件/预设订购

为插件中的每个访问者排序。这意味着如果两个转换都访问“Program”,则转换将以插件或预设顺序运行。

插件在预设之前运行。

插件排序首先要持续。

"plugins": [
  "transform-decorators-legacy", // will run first
  "transform-class-properties" // will run second
]

预设顺序相反(从最后到第一个)。

是的,这很令人困惑,请参阅babel/notes #2

我认为(对于向后兼容性)的原因是大多数用户首先列出“es2015”和“0”秒。阶段0将在2015年之前运行。

"presets": [
  "es2015", // will run third
  "react", // will run second
  "stage-2" // will run first
]