Babel 可以为 "node --harmony" 而不是 ES5 编译吗?
Can Babel compile for "node --harmony" instead of ES5?
我正在尝试编译一个 Koa 应用程序,并且 Koa 有断言来检查以确保我将生成器函数作为中间件传递。但是,我想使用 Babel 从 ES7 编译我的服务器端代码,以与前端代码保持一致。
是否可以针对 node harmony 而不是 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
and/or blacklist
选项,例如
{
blacklist: [
'es6.classes'
]
}
例如,将停止转译 ES6 类 并依赖您的平台支持它们。转换的主要列表是 here.
'regenerator'
在这种情况下会禁用转译生成器。但是,如果您禁用它,并且您正在使用异步函数,那么您需要传递 optional: ['asyncToGenerator']
以启用将异步函数转换为具有包装函数的标准生成器,否则它们将在最终输出。
奇怪,它似乎在 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;
我正在尝试编译一个 Koa 应用程序,并且 Koa 有断言来检查以确保我将生成器函数作为中间件传递。但是,我想使用 Babel 从 ES7 编译我的服务器端代码,以与前端代码保持一致。
是否可以针对 node harmony 而不是 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
and/or blacklist
选项,例如
{
blacklist: [
'es6.classes'
]
}
例如,将停止转译 ES6 类 并依赖您的平台支持它们。转换的主要列表是 here.
'regenerator'
在这种情况下会禁用转译生成器。但是,如果您禁用它,并且您正在使用异步函数,那么您需要传递 optional: ['asyncToGenerator']
以启用将异步函数转换为具有包装函数的标准生成器,否则它们将在最终输出。
奇怪,它似乎在 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;