Ответ 1
Лучшая идея - перейти в исходный код Lebab
Откройте bin/file.js. Прочитайте все строки, чтобы понять, что script.
Интересная часть состоит в следующем:
var transformer = new Transformer({transformers: transformers});
transformer.readFile(file[0]);
transformer.applyTransformations();
transformer.writeFile(program.outFile);
Более конкретно transformer.applyTransformations();
Открой /src/transformer.js
В этом файле я вижу несколько полезных функций:
/**
* Prepare an abstract syntax tree for given code in string
*
* @param string
*/
read(string) {
this.ast = astGenerator.read(string, this.options);
}
Итак, вы можете использовать трансформатор со строкой кода (а не файла)
Теперь вы можете применить преобразования "ES5 к ES6"
/**
* Apply All transformations
*/
applyTransformations() {
for (let i = 0; i < this.transformations.length; i++) {
let transformation = this.transformations[i];
this.applyTransformation(transformation);
}
И затем переделайте его в строку
out() {
let result = recast.print(this.ast).code;
if(this.options.formatter) {
result = formatter.format(result, this.options.formatter);
}
return result;
}
Резюме
var transformer = new Transformer({});
transformer.read('var mySourceCode = "in ES5"');
transformer.applyTransformations();
console.log(transformer.out());
JSFiddle demo здесь
Если вы не хотите всех преобразований, вы можете выбрать, что хотите, с параметрами:
var transformers = {
classes: false,
stringTemplates: false,
arrowFunctions: true,
let: false,
defaultArguments: false,
objectMethods: false,
objectShorthands: false,
noStrict: false,
importCommonjs: false,
exportCommonjs: false,
};
var transformer = new Transformer({transformers: transformers});
JSFiddle demo с параметрами