Шаблон Jade в качестве препроцессора для HTML - PullRequest
10 голосов
/ 30 марта 2012

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

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

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

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

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

Спасибо.

EDIT Jade README имеет этот образец Makefile, но я не уверен, как адаптировать его к моим потребностям.

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

all: $(HTML)

%.html: %.jade
    jade < $< --path $< > $@

clean:
    rm -f $(HTML)

.PHONY: clean

Ответы [ 4 ]

4 голосов
/ 03 апреля 2012

Поскольку у меня была потребность в подобном сценарии, я нашел время и попробовал несколько инструментов и сценариев оболочки (например, навсегда ), но не смог найти ничего удовлетворительного.* Итак, я приступил к реализации этого решения.Вы можете найти его на github:

https://github.com/mihaifm/simplemon

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

Ура!

2 голосов
/ 04 сентября 2013

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

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

0 голосов
/ 05 января 2018

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

find -name '*.jade' | entr make
0 голосов
/ 31 марта 2012

Я бы посоветовал вам написать небольшое приложение для узлов для этого.

Код будет выглядеть так:

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

Я сказал "приложение узла", но оно должно быть тем, с чем вам удобно.

...