====== FPC PAS2JS Studio ======
Integracija pas2js prevajalnika, Web Form Designer in razvoj VSCode razširitev v Pascalu.
**Package-ID:** ''wvds.wvds-fpc-pas2js-studio''
Zahteva [[.:solution-manager|FPC Solution Manager]] (se samodejno namesti).
===== Pregled =====
PAS2JS Studio razširi Solution Manager z orodji za razvoj s **pas2js** prevajalnikom (Pascal to JavaScript):
* **Razvoj VSCode razširitev** — Na Pascalu temelječe razširitve prevajajte, testirajte, pakirajte
* **Spletne aplikacije** — Brskalniške aplikacije s pas2js prevedite in živo testirajte
* **Web Form Designer** — Vizualni WFM-urejevalnik za spletne obrazce
* **Live Server** — Samodejni rebuild in predogled v brskalniku
===== Vrste projektov =====
==== VSCode Extension ====
Se samodejno prepozna, ko ''package.json'' vsebuje VSCode Extension Manifest (''engines.vscode'').
Projekt se v Solution Manager Tree View prikaže kot **virtualni projekt** — z vsemi Pascal-enotami, npm odvisnostmi in InnoSetup-skriptami.
==== Spletna aplikacija ====
pas2js spletne aplikacije se odkrijejo prek ''.wfm'' ali ''.wfmproj'' datotek.
===== Extension Build =====
==== Ukazi ====
| Ukaz | Opis |
^ Build Extension (Debug) | Prevedi z informacijami za razhroščevanje in Source Maps |
^ Build Extension (Release) | Optimiziran build (''-O2'') + esbuild minifikacija |
^ Rebuild Extension | Celotna ponovna gradnja |
^ Clean Extension | Brisanje build-artefaktov |
^ Watch & Build Extension | Samodejni rebuild ob spremembi datoteke |
^ Run Extension Tests | Zagon testov enot |
^ Minify Extension | Ločena esbuild-minifikacija |
==== Postavitev ====
| Ukaz | Opis |
^ Package VSIX | Pakiraj razširitev kot ''.vsix'' |
^ Install Extension | Namesti VSIX v VSCode |
^ Publish Extension | Objavi razširitev v Marketplace |
==== Build-Pipeline ====
Pascal (.pas) → pas2js → extension.pas2js.js → esbuild → extension.js
- **pas2js** prevede Pascal v JavaScript
- **esbuild** združi npm-odvisnosti in minimizira (Release)
- Rezultat: ena sama ''extension.js'' v ''dist/''
===== Spletne aplikacije =====
==== Ukazi ====
| Ukaz | Opis |
^ Build Web App (Debug) | Prevedi spletno aplikacijo (Debug) |
^ Build Web App (Release) | Prevedi spletno aplikacijo (Release) |
^ Watch & Preview Web App | Živ rebuild s predogledom v brskalniku |
^ Stop Watch Mode | Prekini watch-način |
^ Launch Browser Preview | Odpri brskalnik s predogledom URL |
==== Live Server ====
V watch-načinu se zažene lokalni HTTP-strežnik:
* **Vrata**: nastavljiva prek ''fpc-pas2js.webApp.liveServerPort'' (privzeto: 8080)
* **Samodejno odpiranje**: Brskalnik se samodejno odpre (''fpc-pas2js.webApp.autoOpenBrowser'')
* **Samodejno nalaganje**: Stran se ob spremembah datotek samodejno osveži
===== Web Form Designer =====
WFM Designer se samodejno odpre za ''.wfm'' datoteke.
==== Ukazi ====
| Ukaz | Opis |
^ New Web Form | Ustvari nov spletni obrazec |
^ New Frame | Ustvari nov okvir |
^ Toggle Web Form / Code | Preklopi med designerjem in kodo |
^ Preview Web Form | Prikaži obrazec v brskalniku |
^ Toggle Designer View | Preklopi pogled designerja |
===== Debugging =====
==== Browser Debug ====
pas2js spletne aplikacije se lahko razhroščujejo v brskalniku:
* **Vrsta razhroščevalnika**: ''pas2js-browser''
* **Debug-vrata**: nastavljiva prek ''fpc-pas2js.debug.browserDebugPort'' (privzeto: 9222)
==== Source Maps ====
| Način | Opis |
^ ''external'' | Ločena ''.map'' datoteka (privzeto) |
^ ''inline'' | Source Map vgrajena v JS |
^ ''none'' | Brez Source Maps |
Nastavitev: ''fpc-pas2js.debug.sourceMapMode''
===== Test Explorer =====
Test Explorer se integrira v VSCode Testing API in samodejno odkrije FPCUnit-teste.
==== Nastavitve ====
| Nastavitev | Opis | Privzeto |
^ ''test.enabled'' | Test Explorer aktiviran | ''true'' |
^ ''test.testDir'' | Imenik s testi (relativno glede na Workspace) | ''tests'' |
^ ''test.testPattern'' | Glob-vzorec za testne datoteke | ''*.test.pas'' |
^ ''test.timeout'' | Časovna omejitev v milisekundah | ''30000'' |
==== Struktura testov ====
Testi sledijo vzorcu FPCUnit:
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.
==== Odkrivanje ====
* Testne datoteke se iščejo v nastavljenem ''test.testDir'' po vzorcu ''test.testPattern''
* Razredi, ki dedujejo od ''TTestCase'', se prepoznajo kot testne zbirke
* ''published'' metode, ki se začnejo s ''Test'', se prepoznajo kot posamezni testi
==== Ukazi ====
* **Run Tests** — Prevedi in zaženi vse teste
* **Debug Tests** — Zaženi teste v razhroščevalniku (točke prekinitve v testni kodi so mogoče)
==== Rezultati testov ====
* Rezultati se prikažejo v VSCode panelu **Testing** (stranska vrstica)
* Neuspeli testi prikazujejo sporočilo o napaki in številko vrstice
* Zelena = uspešno, rdeča = neuspešno, rumena = preskočeno
===== Nastavitve =====
Vse nastavitve se začnejo z ''fpc-pas2js.'':
==== Prevajalnik ====
^ Nastavitev ^ Opis ^ Privzeto ^
| ''pas2jsPath'' | Pot do ''pas2js'' prevajalnika | Samodejna zaznava |
| ''pas2jsRtlPath'' | Pot do pas2js RTL paketov | Samodejna zaznava |
| ''defaultUnitSearchPaths'' | Dodatne poti za iskanje enot | ''[]'' |
| ''defaultCompilerFlags'' | Dodatne zastavice prevajalnika (npr. ''-dMYDEFINE'') | — |
==== Extension Build ====
^ Nastavitev ^ Opis ^ Privzeto ^
| ''extBuild.autoOnSave'' | Samodejno prevedi ob shranjevanju | ''false'' |
| ''extBuild.minify'' | Minifikacija release-buildov | ''true'' |
| ''extBuild.logToFile'' | Zapiši build-dnevnik v datoteko | ''false'' |
| ''extBuild.installAfterBuild'' | Samodejna namestitev po buildu | ''false'' |
| ''defaultVsixOutputPath'' | Privzeta izhodna pot za VSIX | — |
==== Spletna aplikacija ====
^ Nastavitev ^ Opis ^ Privzeto ^
| ''webApp.liveServerPort'' | Vrata za Live-Server | ''8080'' |
| ''webApp.autoOpenBrowser'' | Samodejno odpri brskalnik | ''true'' |
===== Glej tudi =====
* [[.:start|WvdS FPC Tools pregled]]
* [[.:installation|Namestitev in nastavitev]]
* [[.:solution-manager|FPC Solution Manager]]
* [[.:iss-designer|FPC ISS Designer]]
* [[.:faq|Pogosta vprašanja (FAQ)]]