2014-01-11 1 views
1

쉘에서 Sweet.js 컴파일러를 호출 할 수 있습니다.Node.js의 SweetJS를 문자열로 컴파일

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

나는 Node.js를 모듈 내부에서 동일한 기능을 수행 할 수있는 방법 등 대신 지정된 파일로 출력, 내가 문자열로 컴파일 된 출력을 얻을? 가 변경되기 때문에/sweet.js가 (대신 명령 줄 플래그의 ES6 import의 사용) 좋은 모듈 지원을 얻을 때 제거

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

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

수정,하지만 난 모듈 로딩 부분을 구현하는 방법에 대한 단서를 가지고 있지 않습니다. API는 문서화되지 않았고 코드는 꽤 읽을 수없는 것 같습니다 : ( – robertklep

+0

예, 코드를 살펴본 후 같은 결론을 얻었습니다. – Havvy

+0

왜 내가이 작업을하고 싶은지 궁금한 사람이있어서, 'fez-sweet.js' 모듈을 작성하십시오. – Havvy

답변

2

그것의 문서화되지 않은. 그러나 0.4.0 당신은 NPM 모듈에서 매크로를로드하기 위해 다음과 같은 API를 사용할 수 있습니다

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

root 인수는 노드 모듈을 찾고 시작하는 파일 시스템의 위치입니다. 명령 줄 도구 등을 만들 때는 일반적으로 process.cwd()입니다. compilemodule 배열을 제공 할 수있는 options 개체를 사용합니다.

문자열을 모듈로 컴파일하려는 경우 sweet.loadModule(<contents>)을 사용할 수 있습니다.

다시 말하지만이 API는 단지 일시적 차이 일 뿐이며 가까운 장래에 삭제 될 예정입니다.

편집 : 그 않는`sweetjs.compile()가`있다 년대 compile API