FPC PAS2JS Studio

pas2js Compiler-Integration, Web Form Designer und VSCode Extension-Entwicklung in Pascal.

Package-ID: wvds.wvds-fpc-pas2js-studio

Setzt FPC Solution Manager voraus (wird automatisch mitinstalliert).

Übersicht

PAS2JS Studio erweitert den Solution Manager um Werkzeuge für die Entwicklung mit dem pas2js Compiler (Pascal to JavaScript):

  • VSCode Extension Entwicklung — Pascal-basierte Extensions bauen, testen, paketieren
  • Web-Anwendungen — Browser-Apps mit pas2js kompilieren und live testen
  • Web Form Designer — Visueller WFM-Editor für Web-Formulare
  • Live Server — Automatischer Rebuild und Browser-Vorschau

Projekttypen

VSCode Extension

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.

Web-Anwendung

pas2js Web-Apps werden über .wfm oder .wfmproj Dateien erkannt.

Extension Build

Kommandos

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

Deploy

Kommando Beschreibung
Package VSIX Extension als .vsix paketieren
Install Extension VSIX in VSCode installieren
Publish Extension Extension im Marketplace veröffentlichen

Build-Pipeline

Pascal (.pas) → pas2js → extension.pas2js.js → esbuild → extension.js
  1. pas2js kompiliert Pascal zu JavaScript
  2. esbuild bundelt npm-Dependencies und minimiert (Release)
  3. Ergebnis: einzelne extension.js in dist/

Kontextmenü (Tree View)

Rechtsklick auf ein VSCode Extension-Projekt zeigt das Extension Build Submenü:

  • Build (Debug) / Build (Release) / Rebuild / Clean
  • Watch / Run Tests
  • Package VSIX / Install / Publish
  • Minify

Inline Buttons

Am Extension-Projekt im Tree View:

  • Build (Play-Icon) — Debug-Build
  • Watch (Eye-Icon) — Watch-Modus starten

Web-Anwendungen

Kommandos

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

Live Server

Im Watch-Modus startet ein lokaler HTTP-Server:

  • Port: konfigurierbar über fpc-pas2js.webApp.liveServerPort (Standard: 8080)
  • Auto-Open: Browser öffnet automatisch (fpc-pas2js.webApp.autoOpenBrowser)
  • Auto-Reload: Seite wird bei Datei-Änderungen automatisch neu geladen

Web Form Designer

Der WFM Designer öffnet sich automatisch für .wfm Dateien.

Kommandos

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

Dateien

Ein Web-Formular besteht aus:

  • .pas — Pascal-Unit mit Formular-Logik
  • .wfm — Formular-Layout (ähnlich .lfm für LCL)

Debugging

Browser Debug

pas2js Web-Apps können im Browser debuggt werden:

  • Debugger-Typ: pas2js-browser
  • Debug-Port: konfigurierbar über fpc-pas2js.debug.browserDebugPort (Standard: 9222)

Source Maps

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.

Code Formatter

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

Test Explorer

Der Test Explorer integriert sich in die VSCode Testing-API und erkennt FPCUnit-Tests automatisch.

Konfiguration

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

Test-Struktur

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.

Discovery

  • Test-Dateien werden im konfigurierten test.testDir nach test.testPattern gesucht
  • Klassen die von TTestCase erben werden als Test-Suites erkannt
  • published Methoden die mit Test beginnen werden als einzelne Tests erkannt

Kommandos

  • Run Tests — Alle Tests kompilieren und ausführen
  • Debug Tests — Tests im Debugger ausführen (Breakpoints in Test-Code möglich)

Test-Ergebnisse

  • Ergebnisse erscheinen im VSCode Testing Panel (Seitenleiste)
  • Fehlerhafte Tests zeigen die Fehlermeldung und Zeilennummer
  • Grün = bestanden, Rot = fehlgeschlagen, Gelb = übersprungen

Language Server

Eigene pasls-Konfiguration:

  • fpc-pas2js.pasls.enabled — Language Server aktivieren
  • fpc-pas2js.paslsPath — Pfad zu pasls
  • fpc-pas2js.lazarusSourcePath — Lazarus-Quellen für Referenzen

Einstellungen

Alle Einstellungen beginnen mit fpc-pas2js.:

Compiler

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)

Extension Build

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

Web App

Setting Beschreibung Standard
webApp.liveServerPort Port für Live-Server 8080
webApp.autoOpenBrowser Browser automatisch öffnen true

Debug

Setting Beschreibung Standard
debug.sourceMapMode Source Map Modus external
debug.browserDebugPort Browser Debug-Port 9222

Syntax Highlighting

PAS2JS Studio registriert Pascal und WFM Sprachen:

  • Pascal (.pas, .pp, .inc) — TextMate Grammar
  • WFM (.wfm) — Web Form Markup

Siehe auch

Zuletzt geändert: den 28.02.2026 um 23:40