Скомпилируйте 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 import
s вместо флагов командной строки). Но для 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
принимает объект параметров, где вы можете предоставить массив module
s.
Если вы просто хотите скомпилировать строку как модуль, вы можете использовать sweet.loadModule(<contents>)
,
Опять же, этот API - просто пробел и будет удален в ближайшем будущем.
Изменить: исправил compile
API