node.js - Babel 可以针对 "node --harmony"而不是 ES5 进行编译吗?

标签 node.js babeljs ecmascript-2016

我正在尝试编译一个 Koa 应用程序,并且 Koa 具有检查以确保我将生成器函数作为中间件传递的断言。但是,我想使用 Babel 从 ES7 编译我的服务器端代码,以与前端代码保持一致。

是否有可能以 Node 和谐为目标,而不是 ES5?我在选项中看不到任何有前途的东西,但选择目标似乎是编译器能够做的标准事情。

更新

将 Babel 列入黑名单 regenerator transform似乎没有效果,即使我使用的是 stage: 1

index.js:

require( "babel/register" )({
    sourceMaps: "inline",
    stage: 1,
    blacklist: [ "regenerator" ],
    optional: [ "asyncToGenerator" ]
});

var app = require( "./src/server" );

app.listen( process.env.port || 3000 );

src/server.js:

import koa from "koa";
import router from "koa-router";

router.get( "/", function *( next ) {
    this.body = "Hi!";
});

let app = koa();
app.use( router() );

export default app;

执行:node --harmony index.js

node --version
v0.12.4

最佳答案

--harmony 并没有真正的标准定义,因为它取决于您碰巧使用的 Node 或 iojs 版本。你能用 Babel 做的最好的事情就是明确决定要运行什么转换。 Babel 允许您提供 whitelist 和/或 blacklist 选项,例如

{
  blacklist: [
    'es6.classes'
  ]
}

例如将停止转译 ES6 类并依赖于支持它们的平台。转换的主要列表是 here .

'regenerator' 在这种情况下会禁用转译生成器。但是,如果您禁用它,并且您正在使用异步函数,则您需要传递 optional: ['asyncToGenerator'] 以启用将异步函数转换为具有包装函数的标准生成器,如否则它们最终会出现在最终输出中。

关于node.js - Babel 可以针对 "node --harmony"而不是 ES5 进行编译吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31018695/

相关文章:

html - Canvas 脆皮文字渲染

node.js - 如何在 Node.js 中使用 Prototype.js?

javascript - aurelia、es6 和类名大小写

reactjs - 如何在 webpack 配置文件中启用 babel stage-0

javascript - 在 Babel 项目工作流程中,首先运行单元测试然后再进行转换是否更有意义,反之亦然?

javascript - 如何使用 mocha/chai/chai-as-promised 测试 ES7 异步函数

gulp - babel ES7 Async - 未定义 regeneratorRuntime

javascript - 如何检查 Api 是否被触发以及如何中止 api 如果触发

node.js - 什么是everyauth promise ?

javascript - 如何将回调传递给传递给 "vo"库的生成器?