Шаблон Jade в качестве препроцессора для html
Я не буду использовать node.js в производстве, но мне нравится jade, поэтому я хотел бы скомпилировать jade шаблон html
при разработке.
С учетом этой файловой структуры:
app/
jade_templates /
index.jade
subfolder /
subpage.jade
html_templates /
index.html
subfolder /
subpage.html
Я хотел бы иметь script, который смотрит каталог jade_templates
и компилирует соответствующий html-шаблон в html_templates
в любое время, когда было сделано изменение.
Как это можно сделать?
Спасибо.
ИЗМЕНИТЬ
В Jade 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
Ответы
Ответ 1
Поскольку у меня была потребность в аналогичном script, я потратил время и попробовал несколько инструментов и сценариев оболочки там (например, forever), но не смог найти ничего удовлетворительного.
Итак, я продолжил реализацию этого решения. Вы можете найти его на github:
https://github.com/mihaifm/simplemon
Посмотрите, работает ли это для вас. Я добавил пример и для нефрита.
Ура!
Ответ 2
Я использую Grunt для этого. Используя grunt-contrib-jade и grunt-contrib-watch, вы можете довольно легко настроить задачу поиска, чтобы посмотреть каталог для нефритовых файлов и скомпилировать их в другой каталог, когда они меняются.
У Grunt есть немного кривой обучения, но она очень удобна и позволяет мне разумно развиваться в Jade (и Sass и Coffeescript!) всякий раз, когда я хочу - если вы вообще заинтересованы в этом подходе, оставляйте комментарий и Я добавлю образец Gruntfile, который сделает то, что вы хотите.
Ответ 3
Я предлагаю вам написать небольшое приложение node, чтобы сделать это.
Код будет выглядеть так:
// 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
Я сказал "node приложение", но это должно быть то, с чем вам удобно.
Ответ 4
Вы можете использовать entr
, который выполняет программу, если один из указанных файлов изменился:
find -name '*.jade' | entr make