
過去,kintone 的外掛與客製化開發需要搭配多個分散的 npm 套件:
這些工具各自獨立、選項命名不一致,光是熟悉每個工具的用法就要花費不少時間。
Cybozu 於 2026 年 2 月 8 日 正式將上述功能全數整合進 cli-kintone,讓從開發到部署的整個流程都能在單一工具內完成,大幅降低學習門檻。
與此同時,原有的四個獨立工具預計於 2026 年 8 月 結束維護,屆時可能無法正常運作,請務必在此之前完成遷移。
cli-kintone 根據 kintone/js-sdk 的使用回饋進行了多項改善:
plugin keygen 指令,讓金鑰產生的行為更加明確清楚--input、--output),操作更加直覺plugin info 指令可以查看外掛的詳細資訊此外,部分指令在內部行為上也有所改善:
plugin upload:改用 kintone REST API 進行上傳,相較於舊版 plugin-uploader 依賴 RPA 的方式,穩定性與速度均有提升| js-sdk 工具 | cli-kintone 指令 | 說明 |
|---|---|---|
| @kintone/create-plugin | plugin init | 初始化新的外掛專案 |
| @kintone/plugin-packer | plugin pack | 將外掛打包為 zip 檔案※ 私鑰產生已移至 plugin keygen |
| @kintone/plugin-uploader | plugin upload | 上傳外掛至 kintone 環境 |
| @kintone/plugin-packer | plugin keygen | 產生外掛的私鑰 |
| - | plugin info | 顯示外掛資訊 |
| @kintone/customize-uploader | customize init | 初始化客製化 manifest 檔案 |
| @kintone/customize-uploader | customize apply | 將 manifest 檔案中的客製化設定套用至 kintone 應用程式 |
| @kintone/customize-uploader | customize export | 將 kintone 應用程式的客製化設定匯出至 manifest 檔案 |
cli-kintone plugin 與 cli-kintone customize 命名空間下部分選項名稱在兩者之間有所不同:
| 功能 | js-sdk | cli-kintone |
|---|---|---|
| 輸入目錄/檔案 | 位置引數 | --input, -i |
| 輸出檔案 | --out |
--output, -o |
| 私鑰檔案 | --ppk |
--private-key |
詳細的介面差異請參閱 各指令的介面與行為差異。
將 cli-kintone 安裝至全域環境或是專案內。詳細說明請參閱官方文件中的 安裝指南。
npm install @kintone/cli --global
遷移前(js-sdk):
kintone-create-plugin my-plugin
遷移後(cli-kintone):
cli-kintone plugin init --name my-plugin
使用 js-sdk 的 create-plugin 時,私鑰會在第一次打包時自動產生;
使用 cli-kintone 則是在執行 plugin init 時產生。
若需要重新產生,請執行以下指令:
cli-kintone plugin keygen --output private.ppk
遷移前(js-sdk):
kintone-plugin-packer --ppk private.ppk --out plugin.zip ./src/
遷移後(cli-kintone):
cli-kintone plugin pack --input ./src/manifest.json --output ./plugin.zip --private-key ./private.ppk
監看模式(Watch mode):
cli-kintone plugin pack --input ./src/manifest.json --output ./plugin.zip --private-key ./private.ppk --watch
遷移前(js-sdk):
kintone-plugin-uploader --base-url https://example.cybozu.com --username admin --password password plugin.zip
遷移後(cli-kintone):
cli-kintone plugin upload --input ./plugin.zip --base-url https://example.cybozu.com --username admin --password password
監看模式(Watch mode):
cli-kintone plugin upload --input ./plugin.zip --base-url https://example.cybozu.com --username admin --password password --watch
cli-kintone 新增了查看外掛基本資訊的指令,可顯示 ID、版本與名稱等內容:
cli-kintone plugin info --input ./plugin.zip --format json
# {
# "id": "pgcfbflalhmhegedmocldhknhpmfmpji",
# "name": "kintone-plugin",
# "version": 1,
# "description": "kintone-plugin",
# "homepage": null
# }
遷移前(js-sdk):
kintone-customize-uploader init
遷移後(cli-kintone):
cli-kintone customize init
遷移前(js-sdk):
kintone-customize-uploader import customize-manifest.json --base-url https://example.cybozu.com --username admin --password password
遷移後(cli-kintone):
cli-kintone customize export --app 123 --output customize-manifest.json --base-url https://example.cybozu.com --username admin --password password
遷移前(js-sdk):
kintone-customize-uploader customize-manifest.json --base-url https://example.cybozu.com --username admin --password password
遷移後(cli-kintone):
cli-kintone customize apply --input customize-manifest.json --app 123 --base-url https://example.cybozu.com --username admin --password password
若 npm scripts 中有使用 js-sdk 工具,請一併更新為 cli-kintone:
遷移前(js-sdk):
{
"scripts": {
"start": "kintone-plugin-packer --ppk private.ppk --watch src/",
"build": "kintone-plugin-packer --ppk private.ppk src/",
"upload": "kintone-plugin-uploader --base-url https://example.cybozu.com --username admin --password password plugin.zip"
}
}
遷移後(cli-kintone):
{
"scripts": {
"start": "cli-kintone plugin pack --input ./src/manifest.json --private-key ./private.ppk --watch",
"build": "cli-kintone plugin pack --input ./src/manifest.json --private-key ./private.ppk",
"upload": "cli-kintone plugin upload --input ./plugin.zip --base-url https://example.cybozu.com --username admin --password password"
}
}
完成遷移後,可視需要移除 js-sdk 相關套件:
npm uninstall @kintone/create-plugin @kintone/plugin-packer @kintone/plugin-uploader
| 選項 | js-sdk | cli-kintone |
|---|---|---|
| 外掛名稱 | 以命令列引數輸入 | --name <name> 選項或互動式輸入預設值為 kintone-plugin |
| 範本 | 可選 minimum 或 modern預設為 minimum |
可選 javascript 或 typescript預設為 javascript |
| plugin-uploader 安裝 | 互動式詢問是否安裝預設為 No(不安裝) |
cli-kintone 預設已安裝開發腳本自動設定為使用 plugin upload 指令 |
--lang 選項 |
可指定指令執行時的顯示語言 | --lang 選項已棄用,僅支援英文顯示 |
範例:
# js-sdk
kintone-create-plugin my-plugin --template minimum
# cli-kintone
cli-kintone plugin init --name my-plugin --template javascript
| 選項 | js-sdk | cli-kintone |
|---|---|---|
| 輸入來源 | 命令列引數指定包含 manifest.json 的目錄 | --input <dir>, -i指定 manifest.json 本身的路徑 |
| 輸出檔案 | --out <file> |
--output <file>, -o預設為 plugin.zip |
| 私鑰 | --ppk <file>未指定時自動產生新的私鑰 |
--private-key <file>, -p不會自動產生,需事先透過 plugin keygen 指令產生(或使用 plugin init 建立外掛專案時產生) |
範例:
# js-sdk
kintone-plugin-packer --ppk private.ppk --out plugin.zip src/
# cli-kintone
cli-kintone plugin pack --input ./src/manifest.json --output ./plugin.zip --private-key ./private.ppk
| 選項 | js-sdk | cli-kintone |
|---|---|---|
| 輸入檔案 | 命令列引數 | --input <file>, -i |
| 確認提示 | 無 | 上傳前會顯示操作確認提示(新增/更新)若要略過提示,請加上 --yes 選項 |
範例:
# js-sdk
kintone-plugin-uploader --base-url https://example.cybozu.com --username admin --password password plugin.zip
# cli-kintone
cli-kintone plugin upload --input ./plugin.zip --base-url https://example.cybozu.com --username admin --password password
| 選項 | js-sdk | cli-kintone |
|---|---|---|
| 輸出檔案 | --dest-dir, -d預設為 dest/ |
--output <file>, -o預設為 customize-manifest.json |
| 應用程式 ID | 互動式輸入 | 不需要(init 階段不使用) |
| 套用範圍 | 互動式輸入 | 固定為 ALL(無法設定) |
| 確認提示 | 無 | 覆寫前會顯示確認提示可加上 --yes 選項略過 |
範例:
# js-sdk
kintone-customize-uploader init
# cli-kintone
cli-kintone customize init
cli-kintone 的 customize export 指令對應 customize-uploader 的 import 子指令。
舊指令的概念為「將 kintone 應用程式的客製化設定匯入到本地 manifast 檔案中」,整合至 cli-kintone 後的概念為「從 kintone 應用程式客製化設定匯出為 manifast 檔」,語意上更直觀,指令也更明確。
| 選項 | js-sdk | cli-kintone |
|---|---|---|
| 指令名稱 | import 子指令 |
export 子指令 |
| 應用程式 ID | 透過 manifest 檔案中的 app 屬性指定 |
--app <id>, -a(必填) |
| 輸出檔案 | 以引數指定 manifest 檔案 | --output <file>, -o預設為 customize-manifest.json |
| 確認提示 | 無 | 覆寫前會顯示確認提示可加上 --yes 選項略過 |
| 認證方式 | 帳號密碼、OAuth | 僅支援帳號密碼不支援 API token 及 OAuth 認證 |
| 檔案輸出路徑 | 與 manifest 相同目錄 | 儲存至 $(dirname $MANIFEST_PATH)/{desktop,mobile}/{js,css}/ |
範例:
# js-sdk
kintone-customize-uploader import customize-manifest.json --base-url https://example.cybozu.com --username admin --password password
# cli-kintone
cli-kintone customize export --app 123 --output customize-manifest.json --base-url https://example.cybozu.com --username admin --password password
| 選項 | js-sdk | cli-kintone |
|---|---|---|
| 應用程式 ID | 透過 manifest 檔案中的 app 屬性指定 |
--app <id>, -a(必填)manifest 檔案中的 app 屬性會被忽略 |
| 輸入檔案 | 以引數指定 manifest 檔案 | --input <file>, -i(必填) |
| 確認提示 | 無 | 套用前會顯示確認提示可加上 --yes 選項略過 |
| 認證方式 | 帳號密碼、OAuth | 僅支援帳號密碼不支援 API token 及 OAuth 認證 |
| 監看模式 | 支援 --watch 選項,可監看檔案變更並自動套用 |
不支援 |
範例:
# js-sdk
kintone-customize-uploader customize-manifest.json --base-url https://example.cybozu.com --username admin --password password
# cli-kintone
cli-kintone customize apply --input customize-manifest.json --app 123 --base-url https://example.cybozu.com --username admin --password password
cli-kintone 的 manifest 檔案與 customize-uploader 採用相同格式。
{
"scope": "ALL",
"desktop": {
"js": [
"https://js.cybozu.com/jquery/3.3.1/jquery.min.js",
"sample/customize.js"
],
"css": ["sample/51-modern-default.css"]
},
"mobile": {
"js": ["https://js.cybozu.com/jquery/3.3.1/jquery.min.js"],
"css": []
}
}
| 屬性 | 必填 | 類型 | 說明 |
|---|---|---|---|
| scope | 是 | "ALL" | "ADMIN" | "NONE" |
客製化套用範圍ALL:所有使用者ADMIN:僅限應用程式管理員NONE:不套用 |
| desktop | 是 | object | PC 畫面的客製化檔案 |
| desktop.js | 是 | string[] | PC 畫面的 JS 檔案(URL 或本地檔案路徑) |
| desktop.css | 是 | string[] | PC 畫面的 CSS 檔案(URL 或本地檔案路徑) |
| mobile | 是 | object | 行動裝置畫面的客製化檔案 |
| mobile.js | 是 | string[] | 行動裝置畫面的 JS 檔案(URL 或本地檔案路徑) |
| mobile.css | 是 | string[] | 行動裝置畫面的 CSS 檔案(URL 或本地檔案路徑) |
為維持與 customize-uploader 的相容性,manifest 檔案中的
app屬性雖然會被接受,但實際上會被忽略。cli-kintone 以--app選項所指定的應用程式 ID 為準。
create-plugin、plugin-packer、plugin-uploader、customize-uploader 四個舊工具結束維護距離舊工具停止維護還有幾個月的時間,但遷移涉及指令結構與選項的調整,若有在 CI/CD pipeline 或多個專案中使用這些工具,建議盡早排入規劃,逐一更新。
遇到問題可以參考 cli-kintone 官方文件 或前往 GitHub Issues 回報。