2012-03-30 12 views
10

No utilizaré node.js en producción, pero me gusta la sintaxis de jade, así que me gustaría compilar la plantilla jade en html al desarrollar.plantilla de Jade como un preprocesador para html

Dada esta estructura de archivos:

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

me gustaría tener un scriptque vigila el directorio jade_templates y compila la plantilla html correspondiente a html_templates cada vez que un cambio se ha realizado.

¿Cómo se puede lograr esto?

Gracias.

EDITAR El Jade README tiene este Makefile de la muestra, pero no estoy seguro de cómo adaptar esto a mis necesidades.

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

all: $(HTML) 

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

clean: 
    rm -f $(HTML) 

.PHONY: clean 

Respuesta

4

Como necesitaba un script similar, me tomé el tiempo y probé algunas herramientas y scripts de shell (como forever) pero no encontré nada satisfactorio.

Así que fui a implementar esta solución. Lo puede encontrar en GitHub:

https://github.com/mihaifm/simplemon

ver si funciona para usted. Agregué un ejemplo para jade también.

¡Salud!

+1

gracias por la respuesta. ¿Te importaría agregar el comando que representaría la plantilla html en función de mis requisitos? Tengo la instalación de Simplemon, pero no parece estar actualizando los cambios en el archivo. No puedo entender lo que estoy haciendo mal. Gracias. –

+0

'cd app' luego' simplemon -O jade html_templates jade_templates'. Qué sistema operativo estás usando, probé esto en Linux y gané. – mihai

+0

Estoy en OS X.Con su comando obtengo el error 'execvp(): No existe ese archivo o directorio' Con el comando' simplemon jade -O html_templates jade_templates' las plantillas se compilan cuando se inician los programas, pero no en los cambios. –

0

Le sugiero que escriba una pequeña aplicación de nodo para hacer esto.

El código se vería así:

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

dije "aplicación nodo" pero debe ser lo que se sienta cómodo.

+0

Supuse que era el proceso, pero no estaba segura de cómo codificar la misma. Gracias por el enlace a fyp. –

2

Utilizo Grunt para esto. Con grunt-contrib-jade y grunt-contrib-watch, puede configurar fácilmente una tarea de grunt para ver un directorio de archivos de jade y compilarlos en otro directorio cuando cambien.

Grunt tiene una pequeña curva de aprendizaje, pero es súper útil y me permite desarrollarme en Jade (y Sass, y Coffeescript!) Siempre que lo desee. Si está interesado en este enfoque, deje un comentario y agregaré un Gruntfile de muestra que haría lo que quieras.

+0

Sería genial ver una muestra de esto. ¡Gracias! – inperspective

0

Se podría hacer uso de entr, que ejecuta un programa si uno de los archivos especificados Cambio:

find -name '*.jade' | entr make 
Cuestiones relacionadas