Skip to main content
以每次狀態轉換一個 JSON 影格的方式,跟隨一個執行中的工作階段。 一個終止信封無法描述整個工作階段,因此 devstartpreview 會為每一次生命週期轉換串流輸出一個 schema-1 影格。每個影格本身就是獨立成行的一個完整結果信封

開啟這道串流

這道串流由 EXTENSION_OUTPUT 環境變數決定。把它設為 jsonndjson,影格就會獨佔 stdout:
串流開啟期間,原本共用 stdout 的人類可讀文案會移到 stderr。錯誤文案永遠留在 stderr,機器模式絕不會隱藏失敗。

影格狀態

每個影格的 value 都帶有工作階段身分:commandbrowserdistPathpidport,以及已知時的 readyPatheventsPathrunIdinstanceIdtoolchainVersion

編譯失敗

compile-failed 影格會把編譯器輸出放在 value.output 裡,因此你永遠不必去刮 stdout。這段輸出已去除 ANSI 控制碼,並以 2000 個字元為上限。當上限把它截斷時,該影格會設定 truncated: true 一次工作階段中的第一次失敗使用錯誤碼 E_FIRST_COMPILE,之後每一次都使用 E_COMPILE

ready 遵循契約

ready 影格在送出之前會先讀取 ready.json。編譯可能成功,而瀏覽器卻拒絕了這個擴充功能,發生這種情況時契約會停留在 error 這種情況下,串流改為發出一個錯誤碼為 E_READY_ERROR_STATUSfailed 影格,並由 value.readyCode 指出契約自身的錯誤碼。

瀏覽器結束

一個背景監看器每秒輪詢一次 ready.json,尋找啟動器寫下的結束戳記。當 browserExitedAt 出現時,串流會發出一個 browser-exited 影格。 影格的錯誤碼取決於契約中的證據:
  • E_PROFILE_LOCKED:契約顯示設定檔被鎖定。瀏覽器根本沒有啟動,另一個工作階段正佔用該設定檔。
  • E_BROWSER_LAUNCH:其餘所有非預期的結束。
當契約中有這些欄位時,影格的 value 會帶有 exitCodebrowserExitedAt

後續步驟