pas2js Compiler-Integration, Web Form Designer und VSCode Extension-Entwicklung in Pascal.
Package-ID: wvds.wvds-fpc-pas2js-studio
PAS2JS Studio erweitert den Solution Manager um Werkzeuge für die Entwicklung mit dem pas2js Compiler (Pascal to JavaScript):
Wird automatisch erkannt wenn package.json ein VSCode Extension Manifest ist (engines.vscode vorhanden).
Das Projekt erscheint als virtuelles Projekt im Solution Manager Tree View — mit allen Pascal-Units, npm Dependencies und InnoSetup-Skripten.
pas2js Web-Apps werden über .wfm oder .wfmproj Dateien erkannt.
| Kommando | Beschreibung |
| Build Extension (Debug) | Kompiliert mit Debug-Infos und Source Maps |
|---|---|
| Build Extension (Release) | Optimierter Build (-O2) + esbuild Minification |
| Rebuild Extension | Vollständiger Neubau |
| Clean Extension | Build-Artefakte löschen |
| Watch & Build Extension | Automatischer Rebuild bei Datei-Änderung |
| Run Extension Tests | Unit-Tests ausführen |
| Minify Extension | esbuild-Minification separat ausführen |
| Kommando | Beschreibung |
| Package VSIX | Extension als .vsix paketieren |
|---|---|
| Install Extension | VSIX in VSCode installieren |
| Publish Extension | Extension im Marketplace veröffentlichen |
Pascal (.pas) → pas2js → extension.pas2js.js → esbuild → extension.js
extension.js in dist/Rechtsklick auf ein VSCode Extension-Projekt zeigt das Extension Build Submenü:
Am Extension-Projekt im Tree View:
| Kommando | Beschreibung |
| Build Web App (Debug) | Web-App kompilieren (Debug) |
|---|---|
| Build Web App (Release) | Web-App kompilieren (Release) |
| Watch & Preview Web App | Live-Rebuild mit Browser-Vorschau |
| Stop Watch Mode | Watch-Modus beenden |
| Launch Browser Preview | Browser mit Preview-URL öffnen |
Im Watch-Modus startet ein lokaler HTTP-Server:
fpc-pas2js.webApp.liveServerPort (Standard: 8080)fpc-pas2js.webApp.autoOpenBrowser)
Der WFM Designer öffnet sich automatisch für .wfm Dateien.
| Kommando | Beschreibung |
| New Web Form | Neues Web-Formular erstellen |
|---|---|
| New Frame | Neuen Frame erstellen |
| Toggle Web Form / Code | Zwischen Designer und Code wechseln |
| Preview Web Form | Formular im Browser anzeigen |
| Toggle Designer View | Designer-Ansicht umschalten |
Ein Web-Formular besteht aus:
.pas — Pascal-Unit mit Formular-Logik.wfm — Formular-Layout (ähnlich .lfm für LCL)pas2js Web-Apps können im Browser debuggt werden:
pas2js-browserfpc-pas2js.debug.browserDebugPort (Standard: 9222)| Modus | Beschreibung |
external | Separate .map Datei (Standard) |
|---|---|
inline | Source Map eingebettet in JS |
none | Keine Source Maps |
Konfiguration: fpc-pas2js.debug.sourceMapMode
Validate Source Maps: Prüft ob Source Maps korrekt generiert wurden.
PAS2JS Studio bringt eine eigene Formatter-Konfiguration mit:
| Setting | Beschreibung | Standard |
formatter.engine | ptop, jcf, oder none | ptop |
|---|---|---|
formatter.ptopPath | Pfad zu ptop | Auto-Erkennung |
formatter.jcfPath | Pfad zu jcf | Auto-Erkennung |
formatter.configPath | Konfigurationsdatei | — |
formatter.formatOnSave | Bei Speichern formatieren | false |
Der Test Explorer integriert sich in die VSCode Testing-API und erkennt FPCUnit-Tests automatisch.
| Setting | Beschreibung | Standard |
test.enabled | Test Explorer aktivieren | true |
|---|---|---|
test.testDir | Test-Verzeichnis (relativ zum Workspace) | tests |
test.testPattern | Glob-Pattern für Test-Dateien | *.test.pas |
test.timeout | Timeout in Millisekunden | 30000 |
Tests folgen dem FPCUnit-Muster:
unit MyFeature.test; interface uses fpcunit, testregistry; type TMyFeatureTest = class(TTestCase) published procedure Test_Add_ReturnsSum; procedure Test_Divide_ByZero_Raises; end; implementation procedure TMyFeatureTest.Test_Add_ReturnsSum; begin AssertEquals(4, Add(2, 2)); end; procedure TMyFeatureTest.Test_Divide_ByZero_Raises; begin AssertException(EDivByZero, @DoDivideByZero); end; initialization RegisterTest(TMyFeatureTest); end.
test.testDir nach test.testPattern gesuchtTTestCase erben werden als Test-Suites erkanntpublished Methoden die mit Test beginnen werden als einzelne Tests erkanntEigene pasls-Konfiguration:
fpc-pas2js.pasls.enabled — Language Server aktivierenfpc-pas2js.paslsPath — Pfad zu paslsfpc-pas2js.lazarusSourcePath — Lazarus-Quellen für Referenzen
Alle Einstellungen beginnen mit fpc-pas2js.:
| Setting | Beschreibung | Standard |
|---|---|---|
pas2jsPath | Pfad zu pas2js Compiler | Auto-Erkennung |
pas2jsRtlPath | Pfad zu pas2js RTL Packages | Auto-Erkennung |
defaultUnitSearchPaths | Zusätzliche Unit-Suchpfade | [] |
defaultCompilerFlags | Extra Compiler-Flags (z.B. -dMYDEFINE) | — |
| Setting | Beschreibung | Standard |
|---|---|---|
extBuild.autoOnSave | Automatisch bei Speichern kompilieren | false |
extBuild.minify | Release-Builds minifizieren | true |
extBuild.logToFile | Build-Log in Datei schreiben | false |
extBuild.installAfterBuild | Nach Build automatisch installieren | false |
defaultVsixOutputPath | Standard-Ausgabepfad für VSIX | — |
| Setting | Beschreibung | Standard |
|---|---|---|
webApp.liveServerPort | Port für Live-Server | 8080 |
webApp.autoOpenBrowser | Browser automatisch öffnen | true |
| Setting | Beschreibung | Standard |
|---|---|---|
debug.sourceMapMode | Source Map Modus | external |
debug.browserDebugPort | Browser Debug-Port | 9222 |
PAS2JS Studio registriert Pascal und WFM Sprachen:
.pas, .pp, .inc) — TextMate Grammar.wfm) — Web Form Markup