Skip to content

建置、簽章與上架 ​

建置 ​

bash
npx im-miniapp build [--dev-key keys/developer.pem] [--platform-key keys/dev-platform.pem] [--out dist]

CLI 依序:

  1. 讀取並驗證 miniapp.config.ts(錯誤一次全部列出)。
  2. 用 Vite 建置畫面層(base: './'、語法目標 Safari 15/Chrome 111)。
  3. 雙執行緒時,另外把 logic 打包成單一檔案 logic.js(ES2020、壓縮)。
  4. 檢查包內容:沒有保留路徑、有 index.html、icons 指向的檔案存在。
  5. 計算每個檔案的 sha256 與體積,依效能預算檢查;任何一項超標就失敗,不產生 .imapp。
  6. 產生 manifest.json,用開發者私鑰簽出 signature.sig(有給 --platform-key 時另外簽 platform.sig)。
  7. 輸出 dist/<id>-<version>.imapp;sourcemap 放在 dist/sourcemaps/,不進包。

完整選項見 CLI 參考。

離線包內容 ​

<id>-<version>.imapp(zip)
├── manifest.json     # CLI 產生
├── signature.sig     # 開發者簽章
├── platform.sig      # 平台簽章(審核通過後由平台加上)
├── index.html
├── logic.js          # 雙執行緒才有
└── assets/…          # Vite 輸出,檔名含 hash

manifest.json 由 CLI 依 miniapp.config.ts 產生,另外包含 files(每個檔案的 sha256)、sizes(體積)、builtAt、buildTool。不要手動修改包內任何檔案:任何改動都會讓雜湊或簽章驗證失敗。

簽章 ​

簽章誰簽用途
signature.sig開發者私鑰(放在你的 CI)證明包是你建置的
platform.sig平台私鑰(只在平台後台)證明包已通過審核。容器只認這個
  • 兩者都是對 manifest.json 原始位元組的 Ed25519 簽章。
  • 容器內建平台公鑰,下載安裝時驗 platform.sig,並逐檔比對 files 的 sha256。缺少 platform.sig、簽章不符、檔案被改、多出沒列出的檔案,一律拒絕安裝。容器不檢查 signature.sig(由後台檢查)。
  • 送審的包必須帶 signature.sig(--dev-key)。
  • 本機測試用的「開發用平台金鑰」只有測試版 App 信任;正式版 App 不會載入用它簽的包。
  • 用 im-miniapp keygen <名稱> 產生金鑰:<名稱>.pem 是私鑰(PKCS8),<名稱>.pub 是公鑰(32 位元組的 base64)。私鑰不得進版本控制。

版本號 ​

  • 用語意化版本:主.次.修訂,可以帶預發布標記(1.2.0-beta.1)。
  • 內容有任何改動都要升版,包含只改文案或樣式。容器以版本號判斷要不要更新,沒升版的改動不會送到使用者手機。
  • 新版在使用者下次開啟時生效(見生命週期 → 版本更新)。
  • 用到新的容器能力時,同步提高 minContainer(見容器版本)。提高之後,容器版本較舊的 App 使用者會看到「请更新 App 后使用该小程序」。

上架流程 ​

在平台後台(<平台網址>/console/)完成,帳號由平台管理員邀請。

上傳(草稿)→ 送審 → 通過 ─┬→ 全量發佈 ─→ 線上
                ↘ 退回     └→ 灰度發佈 ─→ 調整比例 ─→ 轉全量
   (修改後可重新送審)              線上隨時可:暫停 ⇄ 恢復、回滾到之前的版本、下架

第一次使用 ​

  1. 接受邀請、設定密碼。
  2. 到「账号设置 → 签名公钥」登記 im-miniapp keygen 產生的 .pub(上傳的包必須用對應的私鑰簽)。
  3. 要用 CLI 上傳就建立「CLI 令牌」,執行 im-miniapp login。

1. 上傳 ​

在後台拖曳 .imapp,或執行 im-miniapp upload。後台會自動檢查並給出一份報告:

檢查不通過時
解壓、manifest.json 格式、ID 與版本號(要高於線上版本、不能重複)錯誤,不建立版本
開發者簽章(小程序任一成員登記的公鑰)錯誤
每個檔案的 sha256、沒有多出或缺少的檔案、不用 __im/錯誤
體積重算與效能預算錯誤
minContainer 不高於最新 App 的容器版本錯誤;比線上版本高時提醒
權限:不存在的權限是錯誤;新增的權限、容器尚未支援的能力、需要核准的權限是提醒
新增的網域、靜態掃描(eval、document.cookie、prefers-color-scheme、color-mix() 等)提醒
  • 有錯誤時不建立版本,修正後重新上傳即可(版本號可以沿用)。
  • 報告會列出與線上版本的差異:檔案增刪改、體積變化、新增的權限與網域,審核員也看得到。
  • 第一次上傳某個 ID 時自動建立小程序,名稱、年齡分級、圖示(icons)從包帶入。

2. 體驗 ​

新上傳的版本自動成為體驗版。在「成员与体验」加入體驗成員的 IM 使用者 ID,他們在測試版 App 裡打開小程序就是體驗版(不用送審)。體驗版用體驗金鑰簽章,正式版 App 不會載入。

3. 填資料、送審 ​

送審前要補齊:名稱、簡介(至少 10 個字)、圖示、分類、年齡分級,以及每個權限的用途說明。缺什麼後台會直接列出。

  • 同一時間只能有一個版本在審核;要換版本先「撤回」。
  • 可以勾選「審核通過後自動全量發佈」。
  • 審核員會逐項確認:功能可用、內容合規、權限與用途相符、體驗規範、資料與功能一致、年齡分級、沒有付費。被退回時會附原因,修改後可以重新送審。

4. 發佈 ​

  • 全量:所有使用者下次打開時更新。
  • 灰度:指定比例(同一個使用者永遠落在同一組)與/或指定使用者 ID;觀察「數據」頁的失敗率與啟動耗時,再調整比例或轉全量,有問題就停止灰度。
  • 發佈後 App 的清單即時更新;使用中的畫面不會被打斷,新版在下次打開時生效。

5. 線上維運 ​

操作說明
暫停/恢復立即生效,開著的畫面會顯示「该小程序已暂停服务」;恢復不需重審。被平台暫停的只能由平台恢復
回滾退回之前上線過的任一版本,立即生效
下架從 App 與索引頁移除
數據每日開啟(冷/熱啟動)、使用者數、啟動耗時 p75 對照執行期目標、失敗原因、版本分佈、sdk.telemetry 自訂事件
檢舉使用者的檢舉會通知你與平台

上架前自查 ​