WPWMM4 (1) - Página web con Make y M4 - Generar páginas web estáticas
Simple Use el comando Make. El makefile es compatible con la marca de FreeBSD y NetBSD. En Linux debe instalar el paquete Bmake .
Con WPWMM4 puede crear páginas web estáticas a partir de archivos M4 . La generación se realiza por make . Puede usar scripts o comandos externos.
Debe crear un archivo config.mk en un directorio y establecer las siguientes variables dentro de este archivo. Puede usar . Incrustes en su config.mk, por supuesto.
Common_dir : donde está el 00_defines.m4 . Comúnmente es el mismo directorio que MakeFile .
Incluye_dir : el directorio donde el usuario incluye M4 está. Es relativo al directorio fuente principal.
Src_dir : esta variable apunta al directorio de origen donde son los archivos de origen (generalmente *.m4 ). Puede contener subdirectorios.
Assets_dir : en este directorio están los archivos estáticos ( * .css , * .js , etc.).
Assets_dest_dir : el directorio de destino de los archivos estáticos. Si desea Inside $ {Dest_dir} debe incluirlo en esta variable.
Assets_CP : el comando que copiará $ {assets_dir} . El valor predeterminado es @cp -r .
Dest_dir : el lugar de HTML compilado (creado). El árbol subdirectorio de $ {src_dir} se crea en este directorio por Make .
Flag_dir : el directorio donde están las banderas. Las banderas son archivos simples que almacenan información sobre la construcción. Solo hay una bandera: $ {flag_mkdir} que firma el momento en que la estructura del directorio se crea en $ {Dest_dir} y almacena la lista de directorios creados. Puede agregar más depender a través de $ {mkdir_req} , por lo que puede reconstruir la estructura del directorio después de cambiar este archivo.
Layout_dir : Aquí están los diseños.
Virt_dir : este directorio contiene las plantillas de las páginas virtuales.
Objetivos : la lista de archivos estáticos (páginas virtuales no están incluidas) lo que debería crear. No incluya el $ {Dest_dir} porque está incluido por el sistema de construcción. Puede usar directorios, por supuesto. Su requisito automatizado es el mismo archivo en $ {src_dir} reemplazar la extensión HTML a la extensión M4 .
Targets_Manual : la lista de archivos estáticos separados por el espacio lo que debería crear. No incluya el $ {Dest_dir} porque está incluido por el sistema de construcción. Estos objetivos no han generado automáticamente el requisito como los $ {objetivos} anteriores.
GREQ : Requisito global. Cada objetivo lo necesita. El valor predeterminado está vacío.
foo.html_req : requisitos adicionales de foo.html que se incluye en $ {objetivos} variable (ver arriba). El foo.m4 se agrega automáticamente. Estas variables son opcionales.
M4 : El comando m4 . En la mayoría de los casos se puede establecer simplemente en M4 (en la ruta ). Esta variable es opcional, el valor predeterminado es M4
M4_PARAMS : parámetros del comando m4 . El valor predeterminado es -p -i incluye -d_src_dir = $ {src_dir} . Tenga en cuenta que la opción -P es necesaria porque usamos macros Builtin con M4_ Prefix.
Las siguientes variables se crean dinámicamente durante el edificio y puede usarlas en sus fuentes y plantillas M4 .
_Directory : el directorio de destino dentro de $ {Dest_dir} (sin $ {dest_dir} prefijo). La raíz de $ {dest_dir} es "." (punto).
_File : el nombre de archivo de destino que está bajo generación (sin ninguna extensión).
El sistema envía algunos ayudantes que puede usar en sus archivos. Se definen en 00_defines.m4 . Aquí está la lista de ayudantes:
_Body (contenido, opciones) : produce <body $ options> $ content </body> .
_Charset (charset) : produce <meta charset = "$ charset"> .
_Class (class1, class2, ...) : produce class = "$ class1 $ class2 ..." .
_CSS (CSSFILE) : produce <link rel = "stylesheet" href = $ cssfile> .
_Div (clase, contenido, opciones) : produce <div class = $ class $ options> $ content </div> .
_Head (opciones, contenido) : produce <head $ options> $ content </head> .
_Href (url, texto, opciones, título) : produce <a href = $ url $ options title = $ title> text </a> .
_Meta (parámetros) : produce <meta $ parámetros> .
_Ol (parámetros) : produce una lista ordenada <ol> <li> $ 1 </li> <li> $ 2 </li> ... </ol> . Puede especificar los elementos en la lista de parámetros, separados por coma. ¡Tenga cuidado al citar!
_Stag (TagName, Parameters) : produce <$ TagName $ Parámetros> .
_Tag (TagName, Content, Opciones) : produce <$ TagName $ Options> $ Content </$ TagName> .
_Title (título, opciones) : produce <title $ options> $ title </title> .
_UL (parámetros) : igual que _ol .
Las páginas virtuales no tienen archivos de fuente (M4). Es útil cuando desea crear páginas similares con contenido similar (por ejemplo, listado de archivos PDF, imágenes de listado, ...).
Debe crear grupos de virtuales (puede agregar solo un virtual a un grupo). Puedes hacerlo con las siguientes variables:
Virtuales : contiene el nombre de las categorías. Por ejemplo , virtuales = Cat1 Cat2 . Las categorías están separadas por un personaje espacial.
VirtualTemplate_* : puede establecer (siguiendo el ejemplo anterior) VirtualTemplate_CAT1 y VirtualTemplate_CAT2 Variables. Sus valores dicen qué plantilla debe usar para generar las páginas virtuales. Las plantillas se almacenan en el directorio virt_dir . En sus archivos de plantilla, puede usar variables creadas dinámicamente, consulte [Variables dentro de las fuentes] [] Sección a continuación.
VirtualDir_* : Esta variable apunta al directorio de destino donde deberían aparecer las páginas generadas. Debe establecer cada categoría, por lo que también debe configurar VirtualDir_CAT1 y VirtualDir_CAT2 .
VirtualOut_* : los nombres de archivo de salida. Por ejemplo virtual_cat1 = foo1.html foo2.html . En este caso, tendrá $ {virtualDir_cat1} /foo1.html y $ {virtualDir_cat1} /foo2.html .
VirtualReq_* : requisitos adicionales a la categoría virtual. $ {VirtualTemplate _*}. M4 se agrega automáticamente.
VirtualReqrule_* : una regla de transformación simple para definir un requisito por archivo. La regla de transformación se aplica en los elementos de las variables $ {virtualOut_*} . Por ejemplo, virtualReq_foo = c, .html, .dat, la regla transformará cada extensión .html en extensión .dat : el $ {Destdir} /foodir/bar.html dependerá de Foodir/Bar.dat . Tenga en cuenta que el valor de ** $ {virtualDir_*} no está incluido automáticamente, por lo que si lo desea, ¡debe hacerlo! ¡Tenga cuidado con las dependencias recursivas! ¡Vea los posibles modificadores en el Manual de Make (1) !
Puede definir ganchos que se ejecutan en el evento especificado. Puede usar la macro $ {. Target} en la definición porque la marca expandirá esta variable cuando sea necesario (y no en definición). Si no desea ver el comando debe prefijo con @ firmar.
Hook_pre_html : se ejecuta antes de generar un archivo HTML desde un archivo M4 . El valor predeterminado es $ {msg1} edificio $ {. Target} .
Hook_post_html : se ejecuta después de generar un archivo HTML desde un archivo M4 . El valor predeterminado está vacío. Este gancho es útil, por ejemplo, si desea verificar la validez del archivo HTML (por ejemplo, con Tiry, consulte http://www.html-tidy.org/).
Hook_pre_vhtml : se ejecuta antes de generar un archivo HTML a partir de la plantilla virtual (ver [Virtuals] [] arriba). El valor predeterminado es $ {msg1} construyendo virtual $ {. Target} .
Hook_post_vhtml : se ejecuta después de generar un archivo HTML a partir de la plantilla virtual. El valor predeterminado está vacío.
Puede definir algunos objetivos especiales en su ** config.mk '.
Pre-Everything : Este objetivo se ejecutará antes que cualquier otro objetivo (excepto limpiar , por supuesto). Por ejemplo, puede ejecutar un script que crea algunos archivos, incluso un archivo que se usa en WPWMM4. Con este objetivo puede emular la función Etiquetas (usando la función [Virtuals] []). Otra idea es generar automáticamente la variable $ {Targets} (con el comando Buscar ).
Clean-otro : cuando ejecuta el objetivo limpio (que elimina todo en el directorio $ {Dest_dir} ), también se ejecutará.
Hay algunos objetivos especiales para ayudar a depurar su configuración.
Show-Config : Mostrar las principales variables.
Show-Hooks : Mostrar los ganchos.
Show-Targets : Mostrar los objetivos (incluidos los objetivos virtuales).
Show-Req : Muestre los objetivos con sus requisitos. El objetivo comienza una línea sin ningún espacio en blanco, los requisitos están prefijados por dos espacios. Entre el último requisito y el siguiente objetivo se encuentra una línea vacía insertada.
Show-Virtuals : este objetivo mostrará los virtuales definidos y sus configuraciones.
Hay algunas variables que puede usar y configurar en sus archivos M4 .
Hay algunos comandos que pueden ayudar. Se definen en 00_defines.m4 . Aquí está la lista:
_Script (comando) : ejecuta el comando $ y pegue su salida ( stdout y stderr también). Utiliza la macro ESYSCMD de M4 .
_Layout (Diseño, VARNAME1, VAR1, VARNAME2, VAR2, ...) : Cargue el diseño de diseño $ . Utiliza M4 s incluido macro. Puede definir el diseño de la página web al comienzo del archivo fuente. Este comando asignará las variables VARNAME1 , VARNAME2 , ... con los valores var1 , var2 .
_Layout_pre (pre) : el $ pre se imprime antes del contenido incluido.
_Layout_post (POST) : la publicación $ se imprime después del contenido incluido.
_Incl (archivo) : incluye el archivo $ . El desvío es -1, por lo que esta macro no produce ninguna salida. Es ideal cargar un archivo con definiciones macro.
_2_body (texto) : el texto $ en la etiqueta del cuerpo. Esta macro recopila todas las entradas y no imprime nada. Con _pr_body puede imprimir (y borrar) el contenido.
_2_head (texto) : igual que _2_body pero se acumula en la etiqueta de cabeza .
_Pr_body : imprima y restablezca el contenido recopilado por _2_body . Es una simple macro de Undivert .
_Pr_head : similar a _pr_body .
_Pr_all : imprime <! Doctype html> <html lang = "lang"> , llama _pr_head y _pr_body y después de que cierra la etiqueta html .
config.mk
Un ejemplo generado es mi página de inicio personal (en húngaro): http://uzsolt.hu/ y su archivo fuente están en https://svn.uzsolt.hu/uzsolt.hu/wpwmm4-uzsolt.hu/ y un espejo github : https://github.com/uzsolt/wpwmm4-uzsolt.hu.
Es un ejemplo simple complicado, pero demuestra el poder de WPWMM4 :)
M4 (1), hacer (1)
Zsolt Udvari ([email protected], www.uzsolt.hu)