Может ли Babel скомпилировать для "node --harmony" вместо ES5?

Я пытаюсь скомпилировать приложение Koa, и у Koa есть утверждения, которые проверяют, чтобы убедиться, что я передаю функции генератора в качестве промежуточного программного обеспечения. Тем не менее, я хотел бы скомпилировать мой серверный код из ES7, используя Babel, для согласованности с внешним кодом.

Возможно ли нацелиться на гармонию узла вместо ES5? Я не вижу ничего многообещающего в опциях, но выбор цели кажется стандартным, что можно сделать с помощью компилятора.

Обновить

Черный список преобразования регенератора 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

2 ответа

Решение

Там действительно нет стандартного определения --harmony так как это будет зависеть от того, какую версию Node или iojs вы используете. Лучшее, что вы можете сделать с Babel, это явно решить, какие преобразования запустить. Бабель позволяет вам предоставить whitelist и / или blacklist вариант, например

{
  blacklist: [
    'es6.classes'
  ]
}

например, перестанет переносить классы ES6 и будет полагаться на вашу платформу, поддерживающую их. Основной список преобразований находится здесь.

'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;
Другие вопросы по тегам