Communitygithub.com

ZephyrCloudIO/zephyr-packages

設定並部署搭配 zephyr-astro-integration 的 Astro 網站;用於將 withZephyr 加入 astro.config 的 integrations、判斷 Astro 應用程式的輸出是否可發布、設定 ZE_PUBLIC_* 執行時期值或部署鉤子、發布 TAP 套件,或是診斷 Astro 建置未發布的原因。

zephyr-packages 是什麼?

此技能引導使用者將「zephyr-astro-integration」整合至 Astro 專案中,自動設定建置與部署流程。它會檢查現有的 astro.config.*、output 模式、適配器及已安裝的 astro 版本,然後以程式化方式加入 withZephyr(),確保其為 integrations 陣列的最後一項,以便在其他整合(如 sitemap)完成後才觸發上傳。此整合僅適用於靜態網站輸出(static output);若為 server 模式或搭配適配器,僅會發布客戶端與預先渲染的檔案,而不包含隨選路由、API 端點或中介軟體。此外,它會從 .env 檔案載入 ZE_PUBLIC_* 環境變數,並在執行時期覆寫 import.meta.env.ZE_PUBLIC_* 與 process.env.ZE_PUBLIC_* 的讀取。此技能也包含疑難排解指引,例如區分成功的 astro build 與實際發布、避免誤設 target: 'tap-app'、不發布原始碼映射檔,以及確保憑證不會洩漏至客戶端。支援的平台包括 Claude Code 與其他以 SKILL.md 為基礎的 AI 代理工具。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ZephyrCloudIO/zephyr-packages/tree/HEAD/libs/zephyr-astro-integration/skills/zephyr-astro

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

為 Zephyr 設定 Astro

設定

請先閱讀網站既有的 astro.config.*、其 output 模式與適配器,以及已安裝的 astro 版本,再進行編輯。保留其現有的 integrations 與選項。若缺少 zephyr-astro-integration,僅在獲得依賴變更授權時才安裝;它只會在編譯時期需要,因此開發依賴就已足夠。

已安裝的套件宣告 astro 同儕依賴為 ^4.0.0 || ^5.15.8 || ^6.4.6 || ^7.0.7,並使用 Astro 提供的 Vite 版本。將 withZephyr() 作為 integrations 的最後一項加入:

import { defineConfig } from 'astro/config';
import mdx from '@astrojs/mdx';
import sitemap from '@astrojs/sitemap';
import { withZephyr } from 'zephyr-astro-integration';

export default defineConfig({
  site: 'https://example.com',
  integrations: [mdx(), sitemap(), withZephyr()],
});

Astro 會依序執行 astro:build:done 鉤子,一次一個整合,而 Zephyr 會從該鉤子上傳檔案。將其列在最後可讓先前的整合(例如 sitemap)寫入的檔案在上傳前存在。預設匯出即為同一個 withZephyr 函式。請勿同時將 vite-plugin-zephyr 加入 vite.plugins;該整合已負責發布作業。

Module Federation

此整合不會設定 Module Federation,也不會將 zephyr:dependencies 解析為遠端 URL。其 mfConfigs 與 federation 選項是未經修改直接轉送的發布中繼資料,僅在 TAP 套件中需要。在設定前請先閱讀發布詳細資料。共用的 zephyr-module-federation 指南涵蓋跨專案的主機與遠端模型。

僅限靜態輸出

此整合會上傳 Astro 傳遞給 astro:build:done 的目錄,且從不傳送伺服器進入點或快照類型。該目錄即為客戶端輸出,因此它發布的是靜態網站。若使用 output: 'server' 或適配器,僅會發布客戶端與預先渲染的檔案;隨選路由、API 端點與中介軟體則不會發布。請勿將此整合視為 SSR 部署路徑,也不要在未經授權的情況下移除使用者的適配器以強行配合;請改為回報此限制。

此整合也會從網站的 .env 檔案載入 ZE_PUBLIC_* 值,並改寫 import.meta.env.ZE_PUBLIC_* 與 process.env.ZE_PUBLIC_* 的讀取,以便環境可以在建置後覆寫這些值。共用的 zephyr-core 指南涵蓋此模型。

避免誤導性的修正

  • 請勿將成功的 astro build 視為發布。建置鉤子中的 Zephyr 錯誤會被記錄,且建置會繼續進行,除非設定了 ZE_FAIL_BUILD=true;只有無效的 target 會立即擲出錯誤。
  • 請勿在一般網站上設定 target: 'tap-app'。TAP 會停用 ZE_PUBLIC_* 改寫,並需要成對的 federation 中繼資料。
  • 請勿假設原始碼映射檔會被發布;一般網站的 .map 檔案會被跳過。
  • 請勿將憑證放入 ZE_PUBLIC_*;這些值為客戶端可見。

驗證完成

使用網站既有的套件執行器,執行已授權的建置。確認輸出目錄包含預期的頁面與資產,且 Zephyr 回報成功的發布並附上版本 URL。沒有憑證的建置可以確認本機輸出的正確性,但無法確認即時部署的成功。請報告此區別,並清楚說明伺服器渲染的路徑不在發布範圍內。

若失敗,請保留可操作的錯誤訊息,並修正對應的設定。請勿在未經授權的情況下擅自變更網站的輸出模式、壓制錯誤,或宣稱部分建置已部署。

相關技能