Opis gradbenega procesa za WvdS FPC RAD Studio.
┌─────────────────────────────────────────────────────────────┐ │ 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 (optional) │ │ ├── VSIX Creation │ │ └── Version Stamping │ │ │ └─────────────────────────────────────────────────────────────┘
wvds-lint policy --path sources/
Preverja:
Odvisnosti se razrešijo iz build.cfg in package.json:
# build.cfg [build] compiler=pas2js entry=extension_main.pas [dependencies] core=../../common/core vscode=../../common/web/vscode
pas2js \ -Jc \ # Kompaktni izhod -Jirtl.js \ # RTL kot zunanji modul -Jm \ # Generiraj izvorne mape -Tbrowser \ # Cilj: brskalnik -Fu../../common \ # Poti do enot -FE./dist \ # Izhodni imenik pas/extension_main.pas # Vstopna točka
fpc \ -Mobjfpc \ # Object Pascal način -Sh \ # Ansi nizi -O3 \ # Optimizacija stopnja 3 -Fu../../common \ # Poti do enot -FE./bin \ # Izhodni imenik project.lpr # Projektna datoteka
| Možnost | pas2js | FPC | Opis |
|---|---|---|---|
| Debug | -Jc -Jm | -g -O0 | Razhroščevalni simboli, brez optimizacije |
| Release | -Jc -O3 | -O3 -Xs | Optimizirano, brez simbolov |
| Profile | -Jc -Jm | -g -O2 -pg | Profilirna instrumentacija |
Viri se kopirajo v dist/:
dist/
├── extension_main.js # Prevedena koda
├── extension_main.js.map # Izvorna mapa
└── assets/ # Kopirani viri
├── templates/*.html
└── images/*.png
Izvorne mape omogočajo razhroščevanje Pascal kode:
// extension_main.js.map
{
"version": 3,
"sources": ["../pas/extension_main.pas"],
"mappings": "..."
}
vsce package --out binaries/dist/
Ustvari: wvds-vscode-{name}-{version}.vsix
Verzija se prebere iz package.json in vgradi v gradnjo:
const VERSION = {$I version.inc}; // Generirano iz package.json
| Način | Uporaba | Optimizacija | Simboli |
|---|---|---|---|
| debug | Razvoj | Brez | Da |
| release | Produkcija | Maksimalna | Ne |
| profile | Analiza zmogljivosti | Srednja | Da + profiliranje |
Gradnja uporablja predpomnjenje za hitrejše prevajanje:
binaries/cache/ vsebuje prevedene enote (.ppu, .o)wvds-build clean izbriše predpomnilnikGradna veriga orodij sestoji iz dveh glavnih orodij:
Prevaja PXAML datoteke za določen cilj:
pxamlc compile \ --target <tui|desktop|web> \ --pxaml <file.pxaml> \ --packs ~/packs \ --out ~/binaries/out/<app>/<target>
| Možnost | Opis |
|---|---|
--target | Ciljna platforma: tui, desktop, web |
--pxaml | Vhodna PXAML datoteka |
--packs | Pot do Pack registra |
--out | Izhodni imenik |
Orkestrira celoten gradbeni proces:
wvds-build build <tui|desktop|web> \ --app ~/sources/applications/<app> \ --config ~/.wvds/wvds-build.json \ --out ~/binaries/out
| Možnost | Opis |
|---|---|
--app | Imenik aplikacije |
--config | Konfiguracijska datoteka |
--out | Izhodni imenik |
# Izbriši vse gradbene artefakte wvds-build clean # Namesti paket wvds-build pack install --from <packdir> --to ~/vendor-packs --enable tui,web # Odstrani paket wvds-build pack uninstall --vendor <vendor> --pack <pack> # Izpiši nameščene pakete wvds-build pack list
Pot: ~/.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 } } }
Opravila se samodejno generirajo:
// .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"] } ] }
wvds-build.
# .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