WPWMM4 (1) - Webseite mit Make und M4 - Generieren Sie statische Webseiten
Einfach verwenden Sie den Befehl machen. Das Makefile ist mit FreeBSDs und NetBSD -Make kompatibel. Unter Linux sollte das BMAKE -Paket installieren.
Mit WPWMM4 können statische Webseiten aus M4 -Dateien erstellt werden. Die Erzeugung erfolgt durch Make . Sie können externe Skripte oder Befehle verwenden.
Sie sollten eine config.mk -Datei in einem Verzeichnis erstellen und die folgenden Variablen in dieser Datei festlegen. Sie können Natürlich in Ihrer Konfiguration verwenden .
Common_dir : wobei die 00_Defines.m4 ist. In der Regel ist das gleiche Verzeichnis wie Makefile .
Include_dir : Das Verzeichnis, in dem die benutzerbasierte M4 enthält. Es ist relativ zum Hauptquellverzeichnis.
SRC_DIR : Diese Variable zeigt auf das Quellverzeichnis, in dem sich die Quelldateien (normalerweise *.M4 ) befinden. Es kann Unterverzeichnisse enthalten.
Assets_dir : In diesem Verzeichnis sind die statischen Dateien ( * .css , * .js usw.).
Assets_dest_dir : Das Zielverzeichnis statischer Dateien. Wenn Sie in $ {dest_dir} wollen, sollte es in diese Variable einbezogen werden.
Assets_CP : Der Befehl, der das $ {assets_dir} kopiert. Standard ist @CP -r .
Dest_dir : Der Ort des kompilierten (erstellten) HTML -Platzes. Der Unterverzeichnisbaum von $ {src_dir} wird in diesem Verzeichnis durch Make erstellt.
Flag_dir : Das Verzeichnis, in dem sich die Flags befinden. Flags sind einfache Dateien, die Informationen zum Erstellen speichern. Es gibt nur ein Flag: $ {flag_mkdir}, der die Zeit unterzeichnet, in der die Verzeichnisstruktur in $ {dest_dir} erstellt wird und die Liste der erstellten Verzeichnisse speichert. Sie können plus über $ {mkdir_req} hinzufügen - und können die Verzeichnisstruktur nach der Änderung dieser Datei neu bauen.
Layout_dir : Hier sind die Layouts.
Virt_dir : Dieses Verzeichnis enthält die Vorlagen virtueller Seiten.
Ziele : Die platzübergreifende Liste statischer Dateien (virtuelle Seiten sind nicht enthalten), was erstellen sollte. Fügen Sie nicht das $ {dest_dir} hinzu, da es vom Gebäudesystem enthalten ist. Sie können natürlich Verzeichnisse verwenden. Die automatisierte Anforderung ist dieselbe Datei in $ {src_dir}, die die HTML -Erweiterung auf M4 -Erweiterung ersetzt.
TOIMS_MANUAL : Die platzübergreifende Liste statischer Dateien, was erstellen sollte. Fügen Sie nicht das $ {dest_dir} hinzu, da es vom Gebäudesystem enthalten ist. Diese Ziele haben die Anforderung nicht automatisch als $ {Ziele} oben generiert.
GREQ : Globale Anforderung. Es wird von jedem Ziel benötigt. Standard ist leer.
foo.html_req : Zusätzliche Anforderungen von foo.html , die in $ {Ziels} Variable enthalten ist (siehe oben). Der Foo.m4 wird automatisch hinzugefügt. Diese Variablen sind optional.
M4 : Der M4 -Befehl. In den meisten Fällen können einfach auf M4 (im Pfad ) eingestellt werden. Diese Variable ist optional, Standardwert ist M4
M4_PARAMS : Parameter des M4 -Befehls. Der Standardwert ist -p -i include -d_src_dir = $ {src_dir} . Bitte beachten Sie, dass die Option -P neccessary ist, da wir integrierte Makros mit M4_ Präfix verwenden.
Die folgenden Variablen werden während des Gebäudes dynamisch erstellt und Sie können sie in Ihren M4 -Quellen und -vorlagen verwenden.
_Directory : Das Zielverzeichnis in $ {dest_dir} (ohne $ {dest_dir} Präfix). Die Wurzel von $ {dest_dir} ist "." (Punkt).
_File : Der Zielfileinsame, der unter Erzeugung steht (ohne Erweiterung).
Das System versendet einige Helfer, die Sie in Ihren Dateien verwenden können. Sie sind in 00_Defines.m4 definiert. Hier ist die Liste der Helfer:
_Body (Inhalt, Optionen) : Erzeugt <body $ option> $ content </body> .
_CharSet (charSet) : Erzeugt <meta charset = "$ charset"> .
_Class (class1, class2, ...) : produziert class = "$ class1 $ class2 ..." .
_Css (CSSFile) : Erzeugt <link rel = "stylesheet" href = $ csSFile> .
_Div (Klasse, Inhalt, Optionen) : Erzeugt <div class = $ class $ option> $ content </div> .
_Head (Optionen, Inhalt) : Erzeugt <head $ option> $ content </head> .
_Href (URL, Text, Optionen, Titel) : Erzeugt <a href = $ URL $ Optionen Titel = $ title> text </a> .
_Meta (Parameter) : Erzeugt <meta $ parameter> .
_Ol (Parameter) : Erzeugt die geordnete Liste <ol> <li> $ 1 </li> <li> $ 2 </li> ... </ol> . Sie können die Elemente in der Parameterliste angeben, die durch Komma getrennt sind. Seien Sie vorsichtig beim Zitieren!
_Stag (Tagname, Parameter) : Erzeugt <$ Tagname $ Parameter> .
_Tag (Tagname, Inhalt, Optionen) : Erzeugt <$ tagname $ options> $ content </$ tagname> .
_Title (Titel, Optionen) : Erzeugt <Titel $ options> $ title </title> .
_Ul (Parameter) : Wie _ol .
Die virtuellen Seiten haben keine Quelldateien (M4). Es ist nützlich, wenn Sie ähnliche Seiten mit ähnlichen Inhalten erstellen möchten (z. B. Auflistung von PDF -Dateien, Auflistungsbilder, ...).
Sie sollten Gruppen von Virtualen erstellen (Sie können einer Gruppe nur einen virtuellen hinzufügen). Sie können es mit den folgenden Variablen tun:
Virtuale : Enthält den Namen der Kategorien. EG Virtuals = Cat1 Cat2 . Die Kategorien werden durch einen Weltraumcharakter getrennt.
VirtualTemplate_* : Sie können (folgen im obigen Beispiel) virtualTemplate_cat1 und virtualTemplate_cat2 -Variablen festlegen. Ihre Werte sagen, mit welcher Vorlage die virtuellen Seiten generiert werden sollten. Die Vorlagen werden im VIRD_DIR -Verzeichnis gespeichert. In Ihren Vorlagendateien können Sie dynamisch erstellte Variablen verwenden, siehe [Variablen in Quellen] [] Abschnitt unten.
Virtualdir_* : Diese Variable zeigt auf das Zielverzeichnis, in dem die generierten Seiten erscheinen sollten. Sie müssen jede Kategorie festlegen, also müssen Sie auch virtualdir_cat1 und virtualdir_cat2 festlegen.
Virtualout_* : Die Ausgabedateinamen. Zum Beispiel virtual_cat1 = foo1.html foo2.html . In diesem Fall haben Sie $ {virtualdir_cat1} /foo1.html und $ {virtualdir_cat1} /foo2.html .
VirtualReq_* : Zusätzliche Anforderungen an die virtuelle Kategorie. Die $ {virtualTemplate _*}. M4 wird automatisch hinzugefügt.
VirtualReqrule_* : Eine einfache Transformationsregel, um eine Anforderung nach Datei zu definieren. Die Transformationsregel wird auf die Elemente von $ {virtualout_*} Variablen angewendet. Zum Beispiel VirtualReq_foo = C, .html, .Dat, Regel verwandelt jede .html -Erweiterung in .dat -Erweiterung: Die $ {destdir} /foodir/bar.html hängt von der Datei foodir/bar.dat ab. Bitte beachten Sie, dass der Wert von ** $ {virtualDir_*} nicht automatisch enthalten ist. Wenn Sie es möchten, sollten Sie es tun! Seien Sie vorsichtig mit rekursiven Abhängigkeiten! Siehe die möglichen Modifikatoren im Handbuch von Make (1) !
Sie können Hooks definieren, die auf dem angegebenen Ereignis ausgeführt werden. Sie können das Makro $ {. Ziel} in der Definition verwenden, da Make diese Variable erweitert, wenn es erforderlich ist (und nicht in der Definition). Wenn Sie nicht möchten, sollte der Befehl mit @ sign vorfixieren.
Hook_pre_html : Es wird ausgeführt, bevor eine HTML -Datei aus einer M4 -Datei generiert wird. Der Standardwert ist $ {msg1} Erstellung $ {. Ziel} .
Hook_Post_html : Es wird ausgeführt, nachdem eine HTML -Datei aus einer M4 -Datei generiert wurde. Der Standardwert ist leer. Dieser Haken ist beispielsweise nützlich, wenn Sie die Gültigkeit der HTML-Datei überprüfen möchten (z. B. mit Tidy, siehe http://www.html-tidy.org/).
Hook_pre_vhtml : Es wird ausgeführt, bevor eine HTML -Datei aus der virtuellen Vorlage generiert wird (siehe [Virtuals] [] oben). Der Standardwert ist $ {msg1} Erstellen von virtuellem $ {. Target} .
Hook_Post_vhtml : Es wird ausgeführt, nachdem eine HTML -Datei aus der virtuellen Vorlage generiert wurde. Der Standardwert ist leer.
Sie können einige spezielle Ziele in Ihrer ** config.mk 'definieren.
Vor allem : Dieses Ziel wird vor einem anderen Ziel ausgeführt (außer natürlich sauber ). Sie können beispielsweise ein Skript ausführen, das einige Dateien erstellt, sogar eine Datei, die in WPWMM4 verwendet wird. Mit diesem Ziel kann die Tags -Funktion (mit [Virtuals] [] -Funktion) emulieren. Eine andere Idee ist automatisch die Variable $ {Ziele} (mit dem Befehl Find ).
Clean-Other : Wenn Sie sauberes Ziel ausführen (was alles in $ {dest_dir} -Verzeichnung löscht), wird es auch ausgeführt.
Es gibt einige spezielle Ziele, die Ihre Konfiguration debuggen.
Show-Config : Zeigen Sie die Hauptvariablen.
Show-Hooks : Zeigen Sie die Hooks.
Show-Targets : Zeigen Sie die Ziele (einschließlich virtueller Ziele).
Show-REQ : Zeigen Sie die Ziele mit ihren Anforderungen. Das Ziel beginnt eine Linie ohne Weiße, die Anforderungen werden durch zwei Räume vorangestellt. Zwischen der neuesten Anforderung und dem nächsten Ziel befindet sich eine leere Linie.
Show-Virtuals : Dieses Ziel zeigt die definierten Virtualen und deren Konfigurationen an.
Es gibt einige Variablen, die Sie in Ihren M4 -Dateien verwenden und einstellen können.
Es gibt einige Befehle, die helfen können. Sie sind in 00_Defines.m4 definiert. Hier ist die Liste:
_Script (Befehl) : Fügt $ den Befehl aus und füge seine Ausgabe ein ( stdout und stderr ). Es verwendet das ESYSCMD -Makro von M4 .
_Layout (Layout, VarName1, Var1, VarName2, Var2, ...) : Laden Sie das $ -Layout -Layout. Es verwendet M4 von Makro. Sie können das Webseitenlayout am Anfang der Quelldatei definieren. Dieser Befehl weist die Variablen Varname1 , VarName2 , ... mit Werten var1 , var2 zu.
_Layout_pre (pre) : Das $ pre wird vor dem enthaltenen Inhalt gedruckt.
_Layout_post (post) : Der $ post wird nach dem enthaltenen Inhalt gedruckt.
_Incl (Datei) : Enthält die $ Datei . Die Umleitung ist -1, so dass dieses Makro keine Ausgabe erzeugt. Es ist ideal, eine Datei mit Makrodefinitionen zu laden.
_2_body (Text) : Der $ Text wird in das Body -Tag. Dieses Makro sammelt alle Eingänge und druckt nichts aus. Mit _pr_body kann den Inhalt drucken (und löschen).
_2_head (Text) : Gleich wie _2_Body , aber es sammelt sich in Kopf -Tag.
_Pr_body : Drucken und zurücksetzen, den von _2_Body gesammelten Inhalte gesetzt. Es ist ein einfaches undivertes Makro.
_Pr_head : ähnlich wie _pr_body .
_Pr_all : Es druckt <! DocType html> <html lang = "Lang"> , ruft _pr_head und _pr_body und danach das HTML -Tag geschlossen.
config.mk
Ein generiertes Beispiel ist meine persönliche Homepage (in Ungarisch): http://uzslolt.hu/ und seine Quelldatei finden Sie unter https://svn.uzslolt.hu/uzslolt.hu/wpwmm4-uzslol.hu/ und ein Github-Spiegel : https://github.com/uzsolt/wpwmm4-uzslol.hu.
Es ist ein einfaches kompliziertes Beispiel, aber es zeigt die Kraft von WPWMM4 :) es hat
M4 (1) machen (1)
ZSolt Udvari ([email protected], www.uzslolt.hu)