2012-03-30 39 views
10

我不會在生產中使用node.js,但是我喜歡jade的語法,所以我想編寫jade模板到html開發時。Jade模板作爲html的預處理器

鑑於這種文件結構:

app/ 
    jade_templates/
    index.jade 
    subfolder/
     subpage.jade 
    html_templates/
    index.html 
    subfolder/
     subpage.html 

我想有一個腳本該手錶jade_templates目錄,編制相應的HTML模板html_templates的改變已經作出的任何時間。

這是如何實現的?

謝謝。

編輯README有這個示範的Makefile,但我不知道如何將這種適應我的需要。

JADE = $(shell find pages/*.jade) 
HTML = $(JADE:.jade=.html) 

all: $(HTML) 

%.html: %.jade 
    jade < $< --path $< > [email protected] 

clean: 
    rm -f $(HTML) 

.PHONY: clean 

回答

4

因爲我需要一個類似的腳本,我花了一些時間,嘗試了一些工具和外殼腳本(如forever),但找不到滿意的結果。

所以我繼續實施這個解決方案。你可以找到它在github上:

https://github.com/mihaifm/simplemon

看看它是否適合你。我還爲玉器添加了一個例子。

乾杯!

+1

感謝您的回覆。你介意添加一個命令,根據我的要求渲染html模板。我有簡單的安裝,但它似乎沒有更新文件更改。我無法弄清楚我做錯了什麼。謝謝。 – 2012-04-03 02:04:42

+0

'cd app' then'simplemon -O jade html_templates jade_templates'。你使用的是什麼操作系統,我在linux上測試過並獲得了勝利。 – mihai 2012-04-03 07:21:32

+0

我在OS X上。使用你的命令,我得到錯誤'execvp():沒有這樣的文件或目錄'使用'simplemon jade -O html_templates jade_templates'命令時,模板在程序啓動時編譯,而不是在更改時編譯。 – 2012-04-03 18:00:38

0

我建議你寫一個小節點的應用程序做到這一點。

的代碼應該是這樣的:

// Watch a directory for files changes (such as here: https://github.com/Raynos/fyp/blob/master/src/build.js) 
// Get the Jade code from the changed file 
// Compile it 
// Writes the output to a file with the same name in another directory 

我說:「節點的應用程序」,但它應該是什麼你舒服。

+0

我認爲是這個過程中,但我不知道如何編寫它。感謝您與fyp的鏈接。 – 2012-03-31 15:13:16

2

我用Grunt這一點。使用grunt-contrib-jadegrunt-contrib-watch你可以非常容易地設置一個咕嚕任務來監視jade文件的目錄,並在它們改變時將它們編譯到另一個目錄。

Grunt有一點點的學習曲線,但它非常方便,可以讓我在Jade(和Sass,以及Coffeescript!)中進行切實可行的開發 - 如果您對這種方法感興趣,請發表評論我會添加一個Gruntfile來做你想做的事情。

+0

很高興看到這樣的例子。謝謝! – inperspective 2015-01-26 19:56:23

0

你可以利用entr,執行程序,如果指定的文件中的一個改變:

find -name '*.jade' | entr make