2013-01-20 95 views
3

如果我在CoffeeScript中編寫我的整個項目,如何編寫我的「二進制」文件?編譯咖啡文件夾

#!/usr/bin/env coffee 
# My program sits here 

然後,編譯一次,我鬆散的家當:

// Generated by CoffeeScript 1.4.0 
// My program sits here 

我希望它會變成類似:

#!/usr/bin/env node 
// My program sits here 

這可能嗎?或者我需要重新思考我的工作方式。

+0

經過一番調查後,它看起來像我必須讓自己的腳本手動添加此。 – johngeorgewright

+0

你介意分享劇本嗎? –

+0

嘿那裏......我這些天實際上一直在使用完全不同的方法。我所做的是將我的項目分成兩個目錄'src'和'build'。在我的'src'目錄中,將所有內置的CoffeeScript都作爲JavaScript存放到'build'目錄中。然後我有一個名爲'bin'的目錄,其中存有任何「二進制」文件。每個文件都很簡單,需要build目錄中的東西...... IE:'require('../ build/bin/my_script.js');' – johngeorgewright

回答

1

正如你猜測,你可能需要一個腳本來幫助你添加必要的家當線。我通常會創建一個Cakefile任務來完成必要的編譯並添加適當的第一行。

+0

是的。這正是我做到的。編譯腳本後,檢查package.json中是否有二進制文件,並確保它們有正確的shebang。 – johngeorgewright

1

訣竅是不要在您的「二進制」文件中放置.coffee擴展名,也不要編譯它。

我還建議您不要在二進制文件中放置任何有意義的邏輯。相反,只要讓二進制啓動完整的源代碼即可。

一般情況下,每一個我的二進制坐落在一個/bin目錄了我的項目的根,它只有兩行(如在GitHub上here我CoffeeDocTest項目):

#!/usr/bin/env coffee 
require(__dirname + '/../src/coffeedoctest') 

你還希望在其上運行chmod 755 <filename>以使其可執行。

爲主要coffeedoctest.coffee如何開頭,處理命令行選項的示例看here

+1

這個答案並不能解決問題。提出這個問題的人想要在coffeescript中編寫一個二進制文件,但希望將其分發到JavaScript中。你所建議的要求在試圖運行二進制文件的所有機器上都安裝了coffeescript。 – monokrome

+0

他並沒有對「分發」做任何說明,但即使他是,命令行工具通常是針對其他開發者而非用戶。我的想法是,如果你有節點,那麼你有npm,如果你把咖啡腳本作爲開發依賴項放在package.json中,開發者用戶也會擁有它......如果你把它列爲常規依賴項,那麼普通用戶也會擁有它。我爲瀏覽器瀏覽了一個包,但是我發現將命令行腳本保留在原始的CoffeeScript表單中並不用擔心運行時編譯步驟。 –

+0

很好。你完全無視我,甚至還沒有注意到這裏的實際問題。 – monokrome