如果支持NodeJS,则Babel不会转换为ES5

时间:2017-02-02 05:14:13

标签: node.js babeljs

英语不是我的母语,请原谅输入错误。

NodeJS LTS现在是4.x和6.x,它是ES6语法的一部分,仅在6.x,node.green中受支持。

我有一个后端Node项目现在需要支持Node 4.x版本,但是我必须使用一些仅在6.x版本中工作的语法。所以我用preset-es2015介绍了Babel。但是通过这个预设,Babel从ES6转换为ES5。

ES6部分语法,如constlet性能高于var(这是一个假设,实际情况肯定不是那么简单)。

我的代码在节点6.x的99%或节点4.x的57%的ES6支持上运行,实际上不需要将所有代码降级到ES5。

所以我想知道如果支持NodeJS,Babel不会将ES6语法转换为ES5。

此外,Babel是否支持检测当前操作环境的代码支持并智能地转换它?

谢谢。

更新:babel-preset-env是我想要的。

2 个答案:

答案 0 :(得分:2)

babel-preset-env可让您定位特定的节点(或浏览器)版本。即该版本支持的功能不会被转换。例如:

{
  "presets": [
    ["env", {
      "targets": {
        "node": 4
      }
    }]
  ]
}
  

此外,Babel是否支持检测当前操作环境的代码支持并智能地转换它?

在目标环境中执行代码之前,

通常离线,因此实际上不可能。

答案 1 :(得分:0)

如果要将ES6编译为ES5,则需要安装Babel ES2015预设。

npm install babel-preset-es2015

然后您需要启用此预设。启用此ES6到ES5编译的一种方法是使用babel-loader查询字符串:

  module: {
    loaders: [
      {
        test: /\.js$/,
        loader: 'babel-loader?presets[]=es2015'
      }
    ]
  }

或查询选项:

  module: {
    loaders: [
      {
        test: /\.js$/,
        loader: 'babel-loader',
        query: {
          presets: ['es2015']
        }
      }
    ]
  }