2012-03-28 38 views
8

Tôi đang làm việc trong CoffeeScript (viết một Cakefile). Tôi muốn biên soạn một số tệp CoffeeScript khác, à laCoffeeScript biên dịch API

coffee -o lib -c src 

Tôi có thể khởi chạy lệnh trên trong quá trình con, nhưng cách xử lý này có nhiều khó khăn. Tôi muốn sử dụng API nhiều hơn.

Tôi muốn được hạnh phúc để sử dụng các chức năng chính xác từ command.coffee, nhưng tôi không thể làm việc ra như thế nào.

Phụ Lục: Tôi thấy require('coffee-script').compile, mà biên dịch một chuỗi một chuỗi khác. Điều đó vẫn sẽ để lại cho tôi để làm công việc grunt của looping trên các tập tin và thư mục con và viết đầu ra.

+0

Nếu bạn cũng sẽ tìm thấy API phong phú hơn hữu ích, hãy nhận xét về yêu cầu tính năng trên Github https://github.com/jashkenas/coffee-script/issues/2386 –

Trả lời

11

API bạn đang muốn tìm trong coffee-script.coffee. Nó xuất khẩu một chức năng compile làm những gì nó nói trên tin.

Để sử dụng chức năng run của command.coffee trực tiếp, trước tiên bạn phải ghi đè process.argv bằng các tùy chọn bạn đã vượt qua trên dòng lệnh.

+0

Cảm ơn tôi đã thử viết quá trình 'process.argv 'nhưng tôi đã không rút được. Bạn có một ví dụ? –

+2

này làm việc cho tôi: 'command = require 'cà phê kịch bản/lib/cà phê-script/command',' process.argv.push '-o', 'lib', '-c',' src'', ' command.run() '. –

+0

Giá trị trả về có cho tôi biết lệnh đó có thành công hay không? –

7

Chỉ cần sử dụng fs API nút của + 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." 

Ngoài ra hãy xem tại Cakefile riêng coffeescript của (sử dụng các tiến trình con): https://github.com/jashkenas/coffee-script/blob/master/Cakefile

0

Nhờ Jordan và Linus tôi đã viết:

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

Sự cố nổi bật: chức năng run trả về sớm và không có lỗi gọi lại báo cáo : \

Các vấn đề liên quan