Skip to content

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"