2012-03-30 3 views
10

Я не буду использовать node.js в производстве, но мне нравится jade s синтаксис, поэтому я хотел бы скомпилировать jade шаблон в html при разработке.Jade шаблон как препроцессор для html

Учитывая этот файл структура:

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

Я хотел бы иметь сценарий что часы каталог jade_templates и компилирует соответствующий шаблон HTML, чтобы html_templates любое время изменение было сделано.

Как это можно сделать?

спасибо.

EDIT Нефритовый README имеет этот Sample 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

Смотрите, если он работает для вас. Я добавил пример и для нефрита.

Cheers!

+1

Благодарю вас за ответ. Не могли бы вы добавить команду, которая будет отображать html-шаблон на основе моего требования. У меня есть simplemon install, но он, похоже, не обновляется при изменении файла. Я не могу понять, что я делаю неправильно. Спасибо. –

+0

'cd app', затем' simplemon -O jade html_templates jade_templates'. Какую ОС вы используете, я тестировал это на Linux и выигрывал. – mihai

+0

Я на OS X.С вашей командой я получаю сообщение об ошибке 'execvp(): Нет такого файла или каталога' С помощью команды 'simplemon jade -O html_templates jade_templates' шаблоны компилируются при запуске программ, но не при изменениях. –

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. –

2

Для этого я использую Grunt. Используя grunt-contrib-jade и grunt-contrib-watch, вы можете легко настроить задачу grunt, чтобы посмотреть каталог для нефритовых файлов и скомпилировать их в другой каталог при их изменении.

Grunt имеет немного кривой обучения, но он очень удобен и позволяет мне разумно развиваться в Jade (и Sass и Coffeescript!) Всякий раз, когда я хочу - если вы вообще заинтересованы в этом подходе, оставляйте комментарий и я добавлю образец Gruntfile, который будет делать то, что вы хотите.

+0

Было бы здорово увидеть образец этого. Благодаря! – inperspective

0

Вы можете использовать entr, который выполняет программу, если один из указанных файлов меняется:

find -name '*.jade' | entr make 

 Смежные вопросы

  • Нет связанных вопросов^_^