Babel文件未经转换即被复制

Rau*_*pin 106 javascript babeljs

我有这个代码:

"use strict";

import browserSync from "browser-sync";
import httpProxy from "http-proxy";

let proxy = httpProxy.createProxyServer({});
Run Code Online (Sandbox Code Playgroud)

我通过npm 安装babel-corebabel-cli全局安装.关键是当我尝试在终端上使用它编译时:

babel proxy.js --out-file proxified.js
Run Code Online (Sandbox Code Playgroud)

输出文件被复制而不是编译(我的意思是,它与源文件相同).

我在这里错过了什么?

log*_*yth 165

Babel是一个转型框架.在6.x之前,默认情况下它启用了某些转换,但随着Node版本的使用增加,本地支持许多ES6功能,事情可配置变得更加重要.默认情况下,Babel 6.x不执行任何转换.你需要告诉它要运行什么转换:

npm install babel-preset-env
Run Code Online (Sandbox Code Playgroud)

并运行

babel --presets env proxy.js --out-file proxified.js
Run Code Online (Sandbox Code Playgroud)

或创建一个.babelrc包含的文件

{
    "presets": [
        "env"
    ]
}
Run Code Online (Sandbox Code Playgroud)

并像以前一样运行它.

env在这种情况下是一个预设,基本上说是将所有标准ES*行为编译到ES5.如果您使用支持某些ES6的Node版本,您可能需要考虑这样做

{
    "presets": [
        ["env", { "targets": { "node": "true" } }],
    ]
}
Run Code Online (Sandbox Code Playgroud)

告诉预设仅处理Node版本不支持的内容.如果需要浏览器支持,还可以在目标中包含浏览器版本.

  • 这很有用.为什么他们没有把它放在文档中?全球安装babel预设是否安全? (15认同)
  • 对于常规而不是配置这么多......所以开箱即用Babel什么都不做 - 只是复制文件? (7认同)

mml*_*mla 5

这些答案中的大多数已经过时了。@babel/preset-env并且"@babel/preset-react是您所需要的(截至 2019 年 7 月)。