WPWMM4 (1) - Page Web avec Make et M4 - Générez des pages Web statiques
Utilisez simple la commande de marque. Le MakeFile est compatible avec FreeBSD's et NetBSD's Make. Sur Linux doit installer le package Bmake .
Avec WPWMM4 peut créer des pages Web statiques à partir de fichiers M4 . La génération est effectuée par Make . Vous pouvez utiliser des scripts ou des commandes externes.
Vous devez créer un fichier config.mk dans un répertoire et définir les variables suivantes dans ce fichier. Vous pouvez utiliser . Inclure dans votre configuration.mk bien sûr.
Common_Dir : où le 00_defines.m4 est. C'est généralement le même répertoire que Makefile .
Inclut_dir : le répertoire où les utilisateurs incluent M4 . Il est relatif au répertoire source principal.
SRC_DIR : Cette variable pointe vers le répertoire source où les fichiers source (généralement * .m4 ) sont. Il peut contenir des sous-répertoires.
Assets_dir : dans ce répertoire se trouvent les fichiers statiques (* .css , * .js , etc.).
Assets_dest_dir : le répertoire cible des fichiers statiques. Si vous voulez à l'intérieur $ {dest_dir} devrait l'inclure dans cette variable.
Assets_cp : la commande qui copiera le $ {Assets_dir} . La valeur par défaut est @cp -r .
Dest_dir : la place du HTML compilée (créée). L'arbre de sous-répertoire de $ {src_dir} est créé dans ce répertoire par marquer .
FLAG_DIR : Le répertoire où se trouvent les drapeaux. Les drapeaux sont des fichiers simples qui stockent des informations sur la construction. Il n'y a qu'un seul drapeau: $ {Flag_mkdir} qui signe le moment où la structure du répertoire est créée dans $ {dest_dir} et stocke la liste des répertoires créés. Vous pouvez ajouter plus dépendre via $ {mkdir_req} - il peut donc reconstruire la structure du répertoire après que ce fichier a changé.
Layout_dir : Voici les dispositions.
Virt_dir : Ce répertoire contient les modèles de pages virtuelles.
Cibles : La liste des fichiers statiques sédurée de l'espace (les pages virtuelles ne sont pas incluses) ce qui devrait créer. N'incluez pas le $ {dest_dir} car il est inclus par le système de construction. Vous pouvez bien sûr utiliser les répertoires. Son exigence automatisée est le même fichier dans $ {SRC_DIR} Remplacement de l'extension HTML à l'extension M4 .
Targets_Manual : La liste des fichiers statiques à l'espace ce qui devrait créer. N'incluez pas le $ {dest_dir} car il est inclus par le système de construction. Ces cibles n'ont pas besoin de nécessité automatiquement comme les $ {cibles} ci-dessus.
GREQ : exigence globale. Il est nécessaire de chaque cible. La valeur par défaut est vide.
foo.html_req : exigences supplémentaires de foo.html qui est incluse dans la variable $ {cibles} (voir ci-dessus). Le foo.m4 est automatiquement ajouté. Ces variables sont facultatives.
M4 : la commande M4 . Dans la plupart des cas, peut se définir simplement sur M4 (sur chemin ). Cette variable est facultative, la valeur par défaut est M4
M4_PARAMS : Paramètres de la commande M4 . La valeur par défaut est -p -i include -d_src_dir = $ {src_dir} . Veuillez noter que l'option -p est nécessaire car nous utilisons des macros intégrées avec le préfixe M4_ .
Les variables suivantes sont créées dynamiquement pendant la construction et vous pouvez les utiliser dans vos sources et modèles M4 .
_Directory : le répertoire cible à l'intérieur de $ {dest_dir} (sans $ {dest_dir} ). La racine de $ {dest_dir} est "." (point).
_File : le nom de fichier cible qui est sous génération (sans aucune extension).
Le système expédie des aides que vous pouvez utiliser dans vos fichiers. Ils sont définis dans 00_defines.m4 . Voici la liste des aides:
_Body (contenu, options) : produit <Body $ options> $ contenu </body> .
_Charset (charse) : produit <meta charset = "$ charset"> .
_Class (class1, class2, ...) : produit class = "$ class1 $ class2 ..." .
_Css (cssfile) : produit <link rel = "Stylesheet" href = $ cssfile> .
_Div (classe, contenu, options) : produit <div class = $ class $ options> $ contenu </div> .
_Head (Options, Contenu) : produit <Head $ Options> $ Content </EAFT> .
_Href (URL, texte, options, titre) : produit <a href = $ url $ options title = $ title> text </a> .
_Meta (paramètres) : produit <Meta $ paramètres> .
_OL (Paramètres) : produit la liste ordonnée <l> <li> $ 1 </li> <li> $ $ </li> ... </l> . Vous pouvez spécifier les éléments dans la liste des paramètres, séparés par la virgule. Faites attention à la citation!
_Stag (tagname, paramètres) : produit <$ tagname $ paramètres> .
_Tag (tagname, contenu, options) : produit <$ tagname $ options> $ contenu </ $ tagname> .
_Title (titre, options) : produit <title $ options> $ title </Title> .
_Ul (paramètres) : Identique à _ol .
Les pages virtuelles n'ont pas de fichiers Source (M4). Il est utile lorsque vous souhaitez créer des pages similaires avec un contenu similaire (par exemple la liste des fichiers PDF, la liste des images, ...).
Vous devez créer des groupes de virtuels (vous ne pouvez ajouter qu'un seul virtuel à un groupe). Vous pouvez le faire avec les variables suivantes:
Virtuels : contient le nom des catégories. Par exemple virtuels = Cat1 Cat2 . Les catégories sont séparées par un caractère spatial.
VirtualTemplate_ * : vous pouvez définir (suivre l'exemple ci-dessus) VirtualTemplate_cat1 et VirtualTemplate_cat2 Variables. Leurs valeurs disent quel modèle doit utiliser pour générer les pages virtuelles. Les modèles sont stockés dans le répertoire Virt_dir . Dans vos fichiers de modèle, vous pouvez utiliser des variables créées dynamiquement, voir [Variables à l'intérieur des sources] [] La section ci-dessous.
VirtualDir_ * : Cette variable pointe vers le répertoire cible où les pages générées doivent apparaître. Vous devez définir toutes les catégories, vous devez donc également définir VirtualDir_Cat1 et VirtualDir_Cat2 .
VirtualOut_ * : les noms de fichiers de sortie. Par exemple virtual_cat1 = foo1.html foo2.html . Dans ce cas, vous aurez $ {virtualdir_cat1} /foo1.html et $ {virtualdir_cat1} /foo2.html .
VirtualReq_ * : Exigences supplémentaires à la catégorie virtuelle. Le $ {virtualTemplate _ *}. M4 est ajouté automatiquement.
VirtualReqrule_ * : Une règle de transformation simple pour définir une exigence par fichier. La règle de transformation est appliquée sur les éléments des variables $ {virtualout_ *} . Par exemple, virtualreq_foo = c, .html, .dat, la règle transformera chaque extension .html en extension .dat : le $ {destdir} /foodir/bar.html dépendra du fichier foodir / bar.dat . Veuillez noter que la valeur de ** $ {virtualdir_ *} n'est pas incluse automatiquement, donc si vous le souhaitez, vous devez le faire! Faites attention aux dépendances récursives! Voir les modificateurs possibles dans le manuel de Make (1) !
Vous pouvez définir des crochets qui s'exécutent à l'événement spécifié. Vous pouvez utiliser la macro $ {. Target} dans la définition, car Make élargira cette variable en cas de besoin (et non en définition). Si vous ne voulez pas afficher la commande doit préfixer avec @ signe.
Hook_pre_html : il s'exécute avant de générer un fichier html à partir d'un fichier M4 . La valeur par défaut est $ {msg1} Building $ {. Target} .
Hook_post_html : il s'exécute après avoir généré un fichier html à partir d'un fichier M4 . La valeur par défaut est vide. Ce crochet est utile par exemple si vous souhaitez vérifier la validité du fichier HTML (par exemple avec Tidy, voir http://www.html-tidy.org/).
Hook_pre_vhtml : il s'exécute avant de générer un fichier html à partir du modèle virtuel (voir [virtuels] [] ci-dessus). La valeur par défaut est $ {msg1} Building Virtual $ {. Target} .
Hook_post_vhtml : il s'exécute après avoir généré un fichier html à partir du modèle virtuel. La valeur par défaut est vide.
Vous pouvez définir des cibles spéciales dans votre ** config.mk '.
Pré-tout : cette cible s'exécutera avant toute autre cible (sauf propre bien sûr). Par exemple, vous pouvez exécuter un script qui crée certains fichiers, même un fichier ce qui est utilisé dans WPWMM4. Avec cette cible peut imiter la fonctionnalité des balises (en utilisant la fonctionnalité [Virtuals] []). Une autre idée est automatiquement génère la variable $ {cibles} (avec la commande find ).
Clean-autre : lorsque vous exécutez Clean Target (qui supprime tout dans le répertoire $ {dest_dir} ), il s'exécutera également.
Il existe des objectifs spéciaux pour aider à déboguer votre configuration.
Show-Config : Afficher les principales variables.
Show-Hooks : Montrez les crochets.
Show-ciblage : afficher les cibles (y compris les cibles virtuelles).
show-req : afficher les cibles avec leurs exigences. La cible commence une ligne sans espace blanc, les exigences sont préfixées par deux espaces. Entre la dernière exigence et la cible suivante est une ligne vide insérée.
Show-Virtuals : cette cible affichera les virtuels définis et leurs configurations.
Il existe certaines variables que vous pouvez utiliser et définir dans vos fichiers M4 .
Il existe des commandes qui peuvent aider. Ils sont définis dans 00_defines.m4 . Voici la liste:
_Script (commande) : exécute $ commande et collez sa sortie ( stdout et stderr aussi). Il utilise la macro ESYSCMD de M4 .
_Layout (Layout, VarName1, Var1, VarName2, Var2, ...) : Chargez la disposition de $ . Il utilise la macro incluant M4 . Vous pouvez définir la disposition de la page Web au début du fichier source. Cette commande affectera les variables varName1 , varName2 , ... avec des valeurs var1 , var2 .
_Layout_pre (pré) : le $ pré est imprimé avant le contenu inclus.
_Layout_Post (Post) : Le POST $ est imprimé après le contenu inclus.
_Incl (fichier) : inclut le fichier $ . Le Divert est -1 donc cette macro ne produit aucune sortie. Il est idéal de charger un fichier avec des définitions de macro.
_2_body (texte) : le texte $ sera dans la balise corporelle. Cette macro collecte toutes les entrées et n'imprime rien. Avec _pr_body peut imprimer (et effacer) le contenu.
_2_head (texte) : Identique à _2_body mais il s'accumule dans la balise de tête .
_Pr_body : imprimez et réinitialisez le contenu collecté par _2_body . C'est une simple macro Univert .
_Pr_head : similaire à _pr_body .
_Pr_all : il imprime <! Doctype html> <html lang = "lang"> , appelle _pr_head et _pr_body et après avoir clôturé la balise html .
config.mk
Un exemple généré est ma page d'accueil personnelle (en hongrois): http://uzsolt.hu/ et son fichier source est à https://svn.uzsolt.hu/uzsolt.hu/wpwmm4-uzsolt.hu/ et un miroir github : https://github.com/uzsolt/wpwmm4-uzsolt.hu.
C'est un exemple simple compliqué mais il démontre la puissance de WPWMM4 :) Il a
M4 (1), faire (1)
Zsolt udvari ([email protected], www.uzsolt.hu)