Inhaltsverzeichnis
Build-Pipeline
Opis Build-procesa za WvdS FPC RAD Studio.
Pregled
┌─────────────────────────────────────────────────────────────┐ │ BUILD PIPELINE │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 1. PRE-BUILD │ │ ├── Policy-Check (wvds-lint) │ │ ├── Dependency Resolution │ │ └── Asset Preparation │ │ │ │ 2. COMPILE │ │ ├── pas2js / FPC invocation │ │ ├── Unit Resolution │ │ └── Code Generation │ │ │ │ 3. POST-BUILD │ │ ├── Bundle Assets │ │ ├── Generate Source Maps │ │ └── Copy to dist/ │ │ │ │ 4. PACKAGE (opcionalno) │ │ ├── VSIX Creation │ │ └── Version Stamping │ │ │ └─────────────────────────────────────────────────────────────┘
Pre-Build
Policy-Check
wvds-lint policy --path sources/
Provjerava:
- P0: Nema duplikata u Extensions
- P1: Nema .ts ili ručno pisanih .js
- P2: Wrapperi samo u common/
- P3: Self-contained Output
Dependency Resolution
Ovisnosti se razlučuju iz build.cfg i package.json:
# build.cfg [build] compiler=pas2js entry=extension_main.pas [dependencies] core=../../common/core vscode=../../common/web/vscode
Compile
pas2js-Kompilacija
pas2js \ -Jc \ # Compact output -Jirtl.js \ # RTL kao vanjski modul -Jm \ # Generiranje Source Maps -Tbrowser \ # Target: Browser -Fu../../common \ # Unit-putanje -FE./dist \ # Izlazni direktorij pas/extension_main.pas # Entry Point
FPC-Kompilacija
fpc \ -Mobjfpc \ # Object Pascal Mode -Sh \ # Ansi Strings -O3 \ # Optimizacija Level 3 -Fu../../common \ # Unit-putanje -FE./bin \ # Izlazni direktorij project.lpr # Projekt-Datoteka
Compiler-Opcije
| Opcija | pas2js | FPC | Opis |
|---|---|---|---|
| Debug | -Jc -Jm | -g -O0 | Debug-simboli, bez optimizacije |
| Release | -Jc -O3 | -O3 -Xs | Optimizirano, bez simbola |
| Profile | -Jc -Jm | -g -O2 -pg | Profiling-Instrumentacija |
Post-Build
Asset-Bundling
Resursi se kopiraju u dist/:
dist/
├── extension_main.js # Kompilirani kod
├── extension_main.js.map # Source Map
└── assets/ # Kopirani resursi
├── templates/*.html
└── images/*.png
Source Maps
Source Maps omogućuju Debugging Pascal-koda:
// extension_main.js.map
{
"version": 3,
"sources": ["../pas/extension_main.pas"],
"mappings": "..."
}
Package
VSIX-Kreiranje
vsce package --out binaries/dist/
Generira: wvds-vscode-{name}-{version}.vsix
Version Stamping
Verzija se čita iz package.json i ugrađuje u Build:
const VERSION = {$I version.inc}; // Generirano iz package.json
Build-Modovi
| Mod | Korištenje | Optimizacija | Simboli |
|---|---|---|---|
| debug | Razvoj | Bez | Da |
| release | Produkcija | Maksimalna | Ne |
| profile | Analiza performansi | Srednja | Da + Profiling |
Inkrementalni Build
Build koristi caching za bržu kompilaciju:
binaries/cache/sadrži kompilirane Units (.ppu, .o)- Samo promijenjene Units se rekompiliraju
wvds-build cleanbriše cache
Toolchain CLI
Build-Toolchain se sastoji od dva glavna alata:
pxamlc (PXAML Compiler)
Kompilira PXAML-datoteke za specifični target:
pxamlc compile \ --target <tui|desktop|web> \ --pxaml <file.pxaml> \ --packs ~/packs \ --out ~/binaries/out/<app>/<target>
| Opcija | Opis |
|---|---|
--target | Ciljna platforma: tui, desktop, web |
--pxaml | Ulazna PXAML-datoteka |
--packs | Putanja do Pack-Registra |
--out | Izlazni direktorij |
wvds-build
Orkestrira cjelokupni Build-proces:
wvds-build build <tui|desktop|web> \ --app ~/sources/applications/<app> \ --config ~/.wvds/wvds-build.json \ --out ~/binaries/out
| Opcija | Opis |
|---|---|
--app | Direktorij aplikacije |
--config | Konfiguracijska datoteka |
--out | Izlazni direktorij |
Dodatne naredbe
# Brisanje svih Build-artefakata wvds-build clean # Instaliranje Packa wvds-build pack install --from <packdir> --to ~/vendor-packs --enable tui,web # Deinstaliranje Packa wvds-build pack uninstall --vendor <vendor> --pack <pack> # Popis instaliranih Packova wvds-build pack list
Konfiguracijska datoteka
Putanja: ~/.wvds/wvds-build.json
{ "compilers": { "fpc": "%LAZARUS%/fpc/3.3.1/bin/fpc.exe", "pas2js": "%LAZARUS%/fpc/3.3.1/bin/pas2js.exe" }, "paths": { "packs": "~/packs", "common": "~/sources/common", "output": "~/binaries/out" }, "defaults": { "target": "web", "mode": "debug" }, "targets": { "tui": { "compiler": "fpc", "enabled": true }, "desktop": { "compiler": "fpc", "enabled": true }, "web": { "compiler": "pas2js", "enabled": true } } }
VS Code Tasks
Tasks se automatski generiraju:
// .vscode/tasks.json (generirano) { "version": "2.0.0", "tasks": [ { "label": "WVDS: Build TUI", "type": "shell", "command": "${workspaceFolder}/.wvds/bin/wvds-build", "args": ["build", "tui"] }, { "label": "WVDS: Build Desktop", "type": "shell", "command": "${workspaceFolder}/.wvds/bin/wvds-build", "args": ["build", "desktop"] }, { "label": "WVDS: Build Web", "type": "shell", "command": "${workspaceFolder}/.wvds/bin/wvds-build", "args": ["build", "web"] } ] }
Ne uređujte Tasks ručno - generira ih
wvds-build.
CI/CD-Integracija
# .github/workflows/build.yml build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install FPC run: sudo apt-get install fpc - name: Install pas2js run: sudo apt-get install pas2js - name: Build run: wvds-build --mode release - name: Package run: wvds-build package
Rješavanje problema
"Unit not found"
- Provjerite Unit-putanje u build.cfg
- Provjerite velika/mala slova (Linux)
"JavaScript error"
- Koristite Source Map za debugging
- Provjerite pas2js-izlaz za upozorenja
"VSIX invalid"
- Validirajte package.json
- README.md mora postojati
- Provjerite putanju do ikone
Vidi također
Zuletzt geändert: 29.01.2026. u 22:37