Build-System
Gulp-Tasks für JS/CSS-Bundling, Übersetzungen und Versionierung
Bundling, Übersetzungs-Kompilierung und Versionierung werden über Gulp-Tasks in gulpfile.mjs
gesteuert, aufgerufen mit npx gulp <task>. Die npm run *-Skripte decken nur das Testing ab — siehe die Seite Testing.
Tasks
| Task | Befehl | Wirkung |
|---|---|---|
build | npx gulp build | clean → JS (Rollup) + CSS (PostCSS) |
devbuild | npx gulp devbuild | wie build, aber Dev-Mode (kein Minify, SourceMaps) |
updatepo | npx gulp updatepo | führt update-po-files.sh
aus → xgettext über src/ → messages.pot |
po2php | npx gulp po2php | kompiliert resources/lang/*.po → resources/lang/*.php |
syncversion | npx gulp syncversion | hält latest-version.txt
↔ LinkEnhancerModule.php
synchron |
bumpversion | npx gulp bumpversion | erfordert einen sauberen git-Tree → Version-Bump → syncversion |
archive | npx gulp archive | build + po2php + create-archive.sh
(Release-ZIP) |
forgejo:issue-refs | npx gulp forgejo:issue-refs[:dry] | ergänzt Issue-Referenzen in Commit-Messages (braucht FORGEJO_TOKEN in .env) - wurde nur einmalig angewendet für die Übernahme des Repos von GitHub zu Codeberg |
JS / CSS Bundling
build = clean → (parallel) JS + CSS.
- clean löscht zunächst
resources/js/bundle*undresources/css/bundle*. - JS (Rollup): zwei Entry-Bundles —
jsIndex(das Haupt-index-le.js) undjsExtractLeConfig(le-config.js). Ausgabe nachresources/js/bundle*. - CSS (PostCSS): Dateibasierte Subtasks aus
getCssSubTasks(), mit autoprefixer + cssnano. Ausgabe nachresources/css/bundle*.
Dev-Mode (devbuild) schaltet per toggleDevMode(true) einen Flag um — er deaktiviert das Minifizieren und erzeugt SourceMaps.
Build- & Archive-Pipeline
flowchart LR
subgraph B["🔧 npx gulp build"]
C["🧹 clean<br/>(bundle*)"]
J["`📜 Rollup<br/>**index-le.js** · le-config.js`"]
P["🎨 PostCSS<br/>autoprefixer · cssnano"]
C --> J
C --> P
end
subgraph A["📦 npx gulp archive"]
A1["build"]
A2["po2php"]
A3["`create-archive.sh<br/>**dist/linkenhancer_v<ver>.zip**`"]
A1 --> A2 --> A3
end
classDef bStyle fill:#e3f2fd,stroke:#1565C0,stroke-width:2px
classDef aStyle fill:#e8f5e9,stroke:#2E7D32,stroke-width:2px
class C,J,P bStyle
class A1,A2,A3 aStyle
Übersetzungsdateien
updateporegeneriert nur die Vorlage (messages.pot). Die.po-Dateien selbst werden über Weblate aktualisiert, nicht lokal, um Konflikte zu vermeiden — siehe die Seite Übersetzungs-Pipeline.po2phpwandelt die committeten.po-Dateien in die PHP-Arrays um, die webtrees zur Laufzeit lädt.