巴贝尔可以编译为“node –harmony”而不是ES5吗?

我试图编译一个Koa应用程序,而Koa有断言来检查以确保我作为中间件传递了生成器函数。 不过,我想使用Babel来编译ES7的服务器端代码,以便与前端代码保持一致。

是否有可能针对节点和谐,而不是ES5? 在选项中我没有看到任何有希望的东西,但select一个目标似乎是一个标准的东西,可以用编译器来做。

更新

黑名单Babel的再生变换似乎没有效果,即使我正在使用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类,并依靠您的平台支持他们。 转换的主要列表在这里 。

在这种情况下, 'regenerator'会禁用发电机组。 然而,如果你禁用了这个function,并且你正在使用asynchronous函数,那么你就需要传递optional: ['asyncToGenerator']来启用将asynchronous函数转换为具有包装函数的标准生成器,否则它们会以最终的输出。

奇怪它似乎是从CLI工作(在server.js稍作改动)

 babel-node --blacklist regenerator --harmony server.js 

代码为server.js:

 import koa from "koa"; import router from "koa-router"; const Router = router(); Router.get( "/", function *( next ) { this.body = "Hi foo!"; }); let app = koa(); app.use( Router.routes() ); export default app;