在Node.js中将SweetJS编译为string
从shell中,我可以调用Sweet.js编译器。
sjs -m macro-providing-module -o output-directory/file.js input-directory/file.sjs
我怎么能做到这一点从一个Node.js模块内部,而不是输出到指定的文件,我得到的编译输出为string?
var sweetjs = require('sweet.js'); var input = require('fs').readSync('input-directory/file.sjs'); var module = 'macro-providing-module'; var output = sweetjs(/* ??? */);
它没有logging,因为它会被更改/删除sweet.js得到很好的模块支持(使用ES6 import
s而不是命令行标志)。 但对于0.4.0,您可以使用以下API从npm模块加载macros:
var sweet = require('sweet.js'); var mod = sweet.loadNodeModule(root, modulePath); var out = sweet.compile(<contents>, { modules: [mod] });
root
参数是文件系统上开始查找节点模块的位置。 通常这是process.cwd()
如果你正在做一个命令行工具或东西。 compile
需要一个选项对象,你可以提供一个module
的数组。
如果你只是想把一个string编译成一个模块,你可以使用sweet.loadModule(<contents>)
。
再一次,这个API只是一个暂时的缺口,将在不久的将来被删除。
编辑:更正了compile
API