将SweetJS编译为Node.js中的字符串

将SweetJS编译为Node.js中的字符串,node.js,sweet.js,Node.js,Sweet.js,在shell中,我可以调用Sweet.js编译器 sjs-m宏提供模块-o输出目录/file.js输入目录/file.sjs 如何从Node.js模块内部执行相同的操作,以使编译后的输出成为字符串,而不是输出到指定的文件 var sweetjs = require('sweet.js'); var input = require('fs').readSync('input-directory/file.sjs'); var module = 'macro-providing-module';

在shell中,我可以调用Sweet.js编译器


sjs-m宏提供模块-o输出目录/file.js输入目录/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(/* ??? */);

它没有文档化,因为当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]
});
var sweet=require('sweet.js');
var mod=sweet.loadNodeModule(根,modulePath);
var out=sweet.compile({
模块:[mod]
});
root
参数是文件系统上开始查找节点模块的位置。如果您正在制作命令行工具或其他东西,通常这是
process.cwd()
compile
接受一个options对象,您可以在其中提供
模块的数组

如果只想将字符串编译为模块,可以使用
sweet.loadModule()

同样,该API只是权宜之计,不久将被删除


编辑:更正了
compile
API

sweetjs.compile()
这样做,但是我不知道如何实现模块加载部分。API似乎没有文档化,代码也很难阅读:(是的,我浏览了代码,得出了相同的结论。如果有人想知道我为什么要这样做,我正在尝试编写
fez sweet.js
模块。