2012-12-18 23 views
0

我剛進入咖啡因的世界,我在Cakefiles中遇到了一些麻煩。如何將coffeescript編譯爲源的父目錄?

這是我的理解,Cakefiles使用咖啡腳本語法;如果我想在子目錄中查找文件,那麼我需要fs模塊並執行我需要做的任何操作,就好像我在使用nodejs應用程序一樣嗎?我只需要一個Cakefile來完成整個項目,對嗎?我是否需要對package.json或其他任何項目進行更改以使用Cakefile?

話雖這麼說,因爲我一直在尋找在this delicious cakefile tutorial一些例子我也碰到過這樣下面的代碼片段:

{exec} = require 'child_process' 
task 'build', 'Build project from src/*.coffee to lib/*.js', -> 
    exec 'coffee --compile --output lib/ src/', (err, stdout, stderr) -> 
    throw err if err 
    console.log stdout + stderr 

我希望把我的coffescripts /coffee目錄下,我希望他們編譯爲/爲每個咖啡腳本找到。例如,如果它發現routes/coffee/index.coffee,編譯後的js應輸出爲routes/index.js。爲了做到這一點,我嘗試運行$ coffee --output ../ .,但因爲它不起作用 - 儘管我認爲這是值得的嘗試 - 我試着用Cakefile做這件事。

{exec} = require 'child_process' 
task 'build', 'Build project from *.coffee to ../*.js', -> 
    exec 'coffee --compile --output ../ .', (err, stdout, stderr) -> 
    throw err if err 
    console.log stdout + stderr 

這是以上代碼段的修改版本。它沒有工作。我想了解更多關於cakefiles的知識,以便我可以編寫一個記錄密碼的函數,並在編譯咖啡腳本時將其輸出爲目錄。

如果你可以帶我到一個解決方案或來源,可以幫助我找到解決方案,我將不勝感激。但請記住,我不理解文檔中的高級咖啡腳本...結果示例對我的開發技能更有用。

+0

_「'$ coffee --output ../ .'但是因爲它不起作用」_發生了什麼而不是你所期望的? –

+0

哦,我現在發現了輸出,它將'/ coffee/script.coffee'放入'../ coffee/script.js'中,以便它現在不在項目目錄中。 – Logan

回答

3

我認爲這裏的關鍵區別在於工作目錄。

- root 
-- lib 
--- foo.js <- target 
-- src 
--- foo.coffee 

當你有一個設置,並從root,運行coffee --compile --output lib/ src/它的作品,因爲root/libroot/src都容易從root找到。

- root 
-- foo.js <- target 
-- coffee 
--- foo.coffee 

現在,從root當您運行coffee --compile --output ../ ./然後設置輸出目錄root/..和輸入目錄root/.(或簡稱root

這意味着,當你從root運行此命令你想簡單地說:

coffee --compile --output ./ coffee/ 

或者,如果你cd coffee/,那麼這個:

cd coffee 
coffee --compile --output ../ ./ 

應該正常工作。

+0

ahh優秀!謝謝!所以不需要使用文件系統模塊或任何東西! – Logan

+0

不是,如果你只是想運行咖啡命令。 'Cakefile's仍然很方便。你可以把這個行包裝在一個接口中,並用'cake compile'調用它,所以你不必記住語法。 –

+0

我明白了。爲了使'--output'文件夾相對於正在編譯的'source.coffee',我需要編寫一個函數(也許可以將所有'.coffee'文件放入一個數組並獲取它們的路徑,並設置' --output'到'pwd /../'然後編譯)。 – Logan

相關問題