="` 傳入。">
Skip to content

Emitter 選項

tspconfig.yaml 設定,或在 CLI 以 --option "tsp-asyncapi.<name>=<value>" 傳入。

選項型別預設值效果
file-type"yaml" | "json"yaml文件的序列化格式。
output-filestringasyncapi.yamlfile-typejson 時是 asyncapi.json輸出檔名,寫在 tsp-output/tsp-asyncapi/ 底下。
asyncapi-idstring(省略)輸出為文件頂層的 id 欄位,即應用程式的全域識別碼,慣例上用 URN。
default-content-typestring(省略)輸出為 defaultContentType。message 沒宣告 content type 時,payload 用這個。
preview-featuresstring[][]開啟預覽功能。保留的名稱是 protobufavro

沒設定的選項會整個從文件省略,不會輸出空值。

tspconfig.yaml

yaml
emit:
  - "tsp-asyncapi"
options:
  "tsp-asyncapi":
    output-file: "orders.yaml"
    file-type: "yaml"
    asyncapi-id: "urn:com:example:orders"
    default-content-type: "application/json"

用 CLI

bash
tsp compile . --emit tsp-asyncapi \
  --option "tsp-asyncapi.file-type=json" \
  --option "tsp-asyncapi.asyncapi-id=urn:com:example:orders"

未知的選項名稱會在編譯時驗證失敗(additionalProperties: false)。打錯字會被抓到,不會被靜默忽略。preview-features 裡不是保留名稱的值也一樣會失敗,訊息會列出保留的名稱。

預覽功能

預覽功能會改變輸出的文件。保留的名稱有兩個:protobufavro。本版兩個都可以使用。背後沒有實作的名稱會回報 preview-feature-unavailable,而且不寫出檔案。請求同時指名可用與不可用的功能時,整份一樣會被拒絕。

protobuf 讓帶有官方 TypeSpec.Protobuf decorator 的 model 拿到 proto3 payload。Protobuf payload 指南說明它寫出什麼。

avro 讓帶有 tsp-avro @Avro.avroRecord decorator 的 model 拿到 Avro payload。payload 是以物件寫出的,因為 Avro 就是 JSON。tsp-avro 是這個 emitter 的選用 peer dependency。開啟這個功能的專案要自行安裝它。

兩個功能可以同時開啟。同一個 model 只能帶其中一組 decorator。兩組都帶的 model 會回報 conflicting-generated-schema-source,而且不寫出檔案。

WARNING

預覽功能被拒絕時不會輸出任何東西。在錯誤旁邊寫出一份文件,等於忽略了請求卻不說明。