im-miniapp CLI
bash
npx im-miniapp <指令> [選項]需要 Node.js 22.22 以上(建議 24 LTS)。
build
bash
im-miniapp build [--dev-key <pem>] [--platform-key <pem>] [--out <dir>] [--version <x.y.z>]在小程序專案根目錄執行,輸出 <out>/<id>-<version>.imapp。
| 選項 | 說明 |
|---|---|
--dev-key <pem> | 開發者私鑰,產生 signature.sig。沒給時會警告 |
--platform-key <pem> | 平台私鑰,產生 platform.sig。只用於本機測試(開發用平台金鑰);正式包由平台加簽。沒給時會警告:容器不會載入沒有 platform.sig 的包 |
--out <dir> | 輸出目錄,預設 dist;必須是專案內的子目錄 |
--version <x.y.z> | 覆蓋 miniapp.config.ts 的 version(CI 依 tag 建置時用),同樣要是語意化版本 |
輸出:
dist/
├── <id>-<version>.imapp # 離線包
├── app/ # 包的內容(解壓前的樣子)
└── sourcemaps/ # sourcemap,不進包- 每次建置會先刪掉
dist/裡舊的.imapp。 - 體積報告的每一行對應一條效能預算;任何一項 ✗ 都會以 exit code 1 結束、不產生
.imapp。 - 設定錯誤、包內容不合規(保留路徑、缺
index.html、icons指向不存在的檔案、邏輯層不是單一檔案)也會失敗並列出原因。
體積報告範例:
主包 1.75 MB / 2 MB ✓
分包 orders 412 KB / 2 MB ✓
總量 6.12 MB / 20 MB ✓
首屏 JS 288 KB / 300 KB ✓
邏輯層 96 KB / 2 MB ✓
圖片超標 banner.png 412 KB > 200 KB ✗keygen
bash
im-miniapp keygen <name> [--force]產生 Ed25519 金鑰:
| 檔案 | 內容 |
|---|---|
<name>.pem | 私鑰(PKCS8 PEM,權限 600) |
<name>.pub | 公鑰(32 位元組原始公鑰的 base64) |
檔案已存在時拒絕覆寫,要覆寫請加 --force。私鑰不得進版本控制。
login
bash
im-miniapp login --server <平台網址> [--token <imc_…>]保存平台後台的 CLI 令牌,之後 upload 不必再帶。
- 令牌在後台「账号设置 → CLI 令牌」建立,只會顯示一次;沒給
--token會提示貼上。 - 先向後台驗證令牌有效才存檔。存在
~/.config/im-miniapp/credentials.json(有設XDG_CONFIG_HOME時放那裡),權限 600。 - 令牌外洩時到後台撤銷即可,撤銷後立即失效。
upload
bash
im-miniapp upload [<file>] [--note <說明>] [--out <dir>] [--server <網址>] [--token <imc_…>]把離線包上傳到後台,建立草稿版本,並自動設為體驗版。
| 選項 | 說明 |
|---|---|
<file> | 要上傳的 .imapp;省略時讀目前專案的 miniapp.config.ts,上傳 <out>/<id>-<version>.imapp |
--note <說明> | 版本說明(審核員會看到),最多 500 字 |
--out <dir>、--version | 與 build 相同,用來推算預設檔名 |
--server、--token | 覆蓋 login 存下的設定 |
- 後台會重新驗證開發者簽章、檔案雜湊、體積與預算、權限與網域,並做靜態掃描。有錯誤時列出原因並以 exit code 1 結束,不建立版本;只有提醒時照常建立並印出提醒。
- 第一次上傳某個 ID 時,後台自動建立這個小程序,你成為擁有者。
- 成功後印出後台的版本頁網址:到那裡補齊資料並送審。
CI 不寫憑證檔,改用環境變數:
bash
IM_MINIAPP_SERVER=https://<平台網址> IM_MINIAPP_TOKEN=imc_… npx im-miniapp upload --note "$CI_COMMIT_TITLE"