Hoppa till innehåll

CLI

Phasis levereras med tre huvudsakliga körbara filer i bin/:

  • bin/phasis — kör JavaScript-filer, utvärderar källkod som skickas på kommandoraden och dumpar AST:er.
  • bin/test262 — kör den officiella ECMAScript-konformitetssviten mot Phasis.
  • bin/wpt — kör Web Platform Tests-fixtures mot Phasis (URL, kodning, fetch, headers, Blob, AbortSignal, streams, …).

Efter composer require phasis/phasis länkas bin/phasis och bin/test262 från vendor/bin/. Därifrån fungerar bara bin/phasis: bin/test262 kräver undermodulen test262 git och testklasserna, som paketet Composer inte innehåller, och bin/wpt levereras inte alls. Kör båda från en klon av arkivet Phasis.

bin/phasis

Kod
phasis <file.js> | phasis -e '<source>' | phasis --ast <file.js>

Det här är hela gränssnittet: inga REPL, ingen indata från stdin och ingen modulflagga.

Kör en fil

Shell
./vendor/bin/phasis script.js

Kör script.js som ett klassiskt skript. När det är klart skrivs allt som skriptet skickade till console.log (och console.error, console.warn, …) ut på stdout på en gång. Om skriptet kastar ett undantag skrivs felmeddelandet till stderr och avslutningsstatusen blir 1.

Filen tolkas alltid som ett klassiskt skript, så en fil med import / export eller await på toppnivå ger ett SyntaxError. Om du vill köra en ES-modul använder du Engine::evalAsModule() från PHP (se referensen API) eller paketerar koden först.

Utvärdera källkod

Shell
./vendor/bin/phasis -e 'console.log(Math.PI * 2)'
# 6.283185307179586

Argumentet utvärderas som ett komplett skript. Endast utdata från console skrivs ut; värdet från det sista uttrycket gör det inte, så phasis -e '1 + 2' skriver inte ut något.

Skriv ut AST

Shell
./vendor/bin/phasis --ast script.js
./vendor/bin/phasis -e 'a + b' --ast

Skriver ut syntaxträdet som JSON (indenterat med två blanksteg). Användbart för felsökning av parserproblem eller för att bygga verktyg ovanpå Phasis. Använd parsern API för programmatisk åtkomst.

bin/test262

bin/test262 kör den officiella test262-sviten mot Phasis. Den är användbar som regressionstest när du bidrar med ändringar. Ögonblicksbilden av hela sviten i COMPAT.md skapas av den relaterade bin/compat-report, som den manuellt startade CI-matrisen kör uppdelad i delmängder.

Kör en enskild kategori

Shell
./bin/test262 --category built-ins/Array

Kör hela sviten

Shell
./bin/test262 --jobs 4

Konfiguration

Körprogrammet läser config/support.php från projektroten. Listan test262_skipped_features är tom: ingen test262-funktion hoppas över, inklusive tail-call-optimization. Filen listar också kategorierna och testerna som måste köras isolerat.

Själva sviten är delmodulen test262 git; kör git submodule update --init test262 efter kloning. Utan den avslutas körprogrammet med meddelandet "test262 suite not found".

Andra användbara flaggor

Flagga Syfte
--failures skriv ut en rad för varje test som misslyckas
--limit N avbryt efter de första N testerna
--jobs N kör N tester parallellt
--files-from file kör endast testerna som listas i file
--json skriv ut en maskinläsbar sammanfattning på stdout
--no-progress dölj förloppsraden

Se avsnittet Kompatibilitet för den senaste ögonblicksbilden.

bin/wpt

bin/wpt kör Web Platform Tests-testfixturerna som importerats till tests/Wpt/fixtures/. Korpusen omfattar URL, kodning, atob/btoa, structuredClone, performance, Headers, Blob/File, AbortController/Signal, EventTarget, FormData, WHATWG Streams, hela ytan för crypto/SubtleCrypto, fetch/Request/Response, XMLHttpRequest/XMLHttpRequestUpload och WebSocket. Se Webb-API:er för tabellen med godkända tester per område.

Kör alla importerade testfixturer

Shell
./bin/wpt

Kör en kategori

Shell
./bin/wpt --category headers
./bin/wpt --category streams
./bin/wpt --category blob

Utdata per deltest

Shell
./bin/wpt --category abort --verbose

Skriver ut varje deltest (PASS / FAIL) i varje testfixtur, med meddelanden från påståenden som misslyckats.

JSON-utdata

Shell
./bin/wpt --json

Maskinläsbar sammanfattning av godkända och underkända tester för CI-pipelines eller skriptbaserad analys.

Anteckningar

  • Testfixturer som använder fetch startar automatiskt den medföljande WPT-testservern på tests/Wpt/fetch-server.php på 127.0.0.1:8765 och stänger sedan av den.
  • Testharneskets shim på tests/Wpt/testharness-shim.js implementerar bara den WPT-yta API som de importerade testfixturerna använder (~400 rader jämfört med hela testharness.js på cirka 3 000 rader).
  • Källtestfixturerna finns i tests/Wpt/upstream/ (en gitignore:ad gles utcheckning av web-platform-tests/wpt). Om du vill importera fler kopierar du .any.js-filer från upstream/<area>/ till fixtures/<category>/, så hittar körprogrammet dem automatiskt.

Avslutningskoder

bin/phasis avslutas med en av två koder:

Kod Betydelse
0 lyckades — skriptet kördes klart (även efter --ast)
1 allt annat: ett ohanterat JS-undantag, ett syntaxfel, en saknad fil eller ogiltiga argument

Fel från skriptet skriver ut sitt meddelande till stderr. Ogiltiga argument och saknade filer skriver ut användningsraden till stderr.

Resursgränser

bin/phasis körs med motorns standardvärden och saknar flaggor för gränser: ett tak på 4 096 ramar i JS-anropsstacken, en gräns på 8 192 ramar för transpilerade closures och standardvärdet 100 000 för maxLoopIterations, som bara gäller kod som trädtolkaren kör (se API: setLimit). Det finns ingen tidsgräns; använd timeout runt kommandot om ett skript kanske inte avslutas.