API-интерфейс компилятора CoffeeScript - PullRequest
8 голосов
/ 29 марта 2012

Я работаю в CoffeeScript (пишу Cakefile). Я хотел бы скомпилировать некоторые другие файлы CoffeeScript, а ля

coffee -o lib -c src

Я мог бы запустить вышеупомянутую команду в дочернем процессе, но этот подход имеет кросс-платформенные проблемы и затрудняет обработку ошибок. Я бы предпочел использовать API.

Я был бы рад использовать точные функции из command.coffee , но я не могу понять, как.

Приложение: Я вижу require('coffee-script').compile, который компилирует строку в другую строку. Это по-прежнему оставляло бы мне тяжелую работу по циклу над файлами и подпапками и записи выходных данных.

Ответы [ 3 ]

11 голосов
/ 29 марта 2012

API, который вы ищете, находится в coffee-script.coffee .Он экспортирует функцию compile, которая делает то, что говорит на банке.

Чтобы использовать команду *.перезаписать process.argv параметрами, которые вы передали бы в командной строке.

7 голосов
/ 29 марта 2012

Просто используйте fs API узла + coffeescript.compile:

fs = require 'fs'
coffee = require 'coffee-script'

fs.readFile 'source.coffee', 'utf8', (err, data) ->
    compiled = coffee.compile data
    fs.writeFile 'source.js', compiled, (err) ->
        console.log "Done."

Также взгляните на собственный Cakefile coffeescript (использует дочерние процессы): https://github.com/jashkenas/coffee-script/blob/master/Cakefile

0 голосов
/ 13 ноября 2013

Спасибо, Джордан и Линус, я написал:

 command = require('iced-coffee-script/lib/coffee-script/command')
 process.argv[2..]=['-o','lib','-c','src']
 command.run()

Нерешенные проблемы: функция run возвращается рано и обратного вызова для сообщения об ошибке нет: \

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...