2012-03-30 31 views
10

Tôi sẽ không sử dụng node.js trong sản xuất, nhưng tôi thích cú pháp jade s, vì vậy tôi muốn biên dịch mẫu jade thành html khi phát triển.Mẫu Jade làm bộ tiền xử lý cho html

Với cấu trúc tập tin này:

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

Tôi muốn có một kịch bản rằng đồng hồ thư mục jade_templates và biên dịch các mẫu html tương ứng để html_templates bất cứ lúc nào một sự thay đổi đã được thực hiện.

Làm cách nào để thực hiện điều này?

Cảm ơn bạn.

EDIT Jade README có Makefile mẫu này, nhưng tôi không chắc chắn làm thế nào để thích ứng này để nhu cầu của tôi.

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

all: $(HTML) 

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

clean: 
    rm -f $(HTML) 

.PHONY: clean 

Trả lời

4

Vì tôi có nhu cầu cho một tập lệnh tương tự, tôi đã dành thời gian và thử một vài công cụ và kịch bản lệnh shell ngoài đó (như forever) nhưng không thể tìm thấy bất kỳ điều gì khả quan.

Vì vậy, tôi đã tiếp tục triển khai giải pháp này. Bạn có thể tìm thấy nó trên github:

https://github.com/mihaifm/simplemon

Xem nếu nó làm việc cho bạn. Tôi cũng đã thêm một ví dụ cho ngọc bích.

Chúc mừng!

+1

cảm ơn bạn đã phản hồi. Bạn có nhớ thêm lệnh sẽ hiển thị mẫu html dựa trên yêu cầu của tôi không. Tôi có cài đặt đơn giản, nhưng nó dường như không được cập nhật về thay đổi tập tin. Tôi không thể hiểu được tôi đang làm gì sai. Cảm ơn bạn. –

+0

'cd app' rồi' simplemon -O jade html_templates jade_templates'. Những gì bạn đang sử dụng hệ điều hành, tôi đã thử nghiệm này trên Linux và giành chiến thắng. – mihai

+0

Tôi đang ở trên OS X.Với lệnh của bạn, tôi nhận được lỗi 'execvp(): Không có tập tin hoặc thư mục' Với lệnh' simplemon jade -O html_templates jade_templates' các mẫu biên dịch khi các chương trình bắt đầu, nhưng không phải trên các thay đổi. –

0

Tôi khuyên bạn nên viết một ứng dụng nút nhỏ để thực hiện việc này.

Mã này sẽ trông như thế này:

// 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 

tôi đã nói "ứng dụng nút" nhưng nó phải là bất cứ điều gì bạn thấy thoải mái.

+0

tôi cho rằng đó là quá trình này, nhưng tôi đã không chắc chắn làm thế nào để mã hóa nó. Cảm ơn bạn đã liên kết đến fyp. –

2

Tôi sử dụng Grunt cho việc này. Sử dụng grunt-contrib-jadegrunt-contrib-watch bạn có thể dễ dàng thiết lập một nhiệm vụ grunt để xem một thư mục cho các tập tin ngọc bích và biên dịch chúng vào một thư mục khác khi chúng thay đổi.

Grunt có một chút đường cong học tập nhưng nó cực kỳ tiện dụng và cho phép tôi phát triển khả thi ở Jade (và Sass, và Coffeescript!) Bất cứ khi nào tôi muốn - nếu bạn quan tâm đến cách tiếp cận này để lại một bình luận và tôi sẽ thêm một Gruntfile mẫu có thể làm những gì bạn muốn.

+0

Thật tuyệt vời khi thấy một ví dụ về điều này. Cảm ơn! – inperspective

0

Bạn có thể tận dụng entr, mà thực hiện một chương trình nếu một trong số các tập tin định thay đổi:

find -name '*.jade' | entr make 
Các vấn đề liên quan