Скомпилируйте SweetJS в строку в Node.js

Из оболочки я могу вызвать компилятор Sweet.js.

sjs -m macro-providing-module -o output-directory/file.js input-directory/file.sjs

Как я могу сделать то же самое из модуля Node.js, чтобы вместо вывода в указанный файл я получил скомпилированный вывод в виде строки?

var sweetjs = require('sweet.js');
var input = require('fs').readSync('input-directory/file.sjs');
var module = 'macro-providing-module';

var output = sweetjs(/* ??? */);

1 ответ

Решение

Он недокументирован, потому что он будет изменен / удален, когда sweet.js получит хорошую поддержку модуля (используя ES6 imports вместо флагов командной строки). Но для 0.4.0 вы можете использовать следующий API для загрузки макросов из модулей npm:

var sweet = require('sweet.js');
var mod = sweet.loadNodeModule(root, modulePath);
var out = sweet.compile(<contents>, {
    modules: [mod]
});

root Аргумент - это местоположение в файловой системе, с которого начинается поиск узловых модулей. Как правило, это process.cwd() если вы делаете инструмент командной строки или что-то. compile принимает объект параметров, где вы можете предоставить массив modules.

Если вы просто хотите скомпилировать строку как модуль, вы можете использовать sweet.loadModule(<contents>),

Опять же, этот API - просто пробел и будет удален в ближайшем будущем.

Изменить: исправил compile API

Другие вопросы по тегам