Может ли 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;