kintone プラグイン開発メモ バージョンの書換え


kintone プラグインの開発で、一つのプラグイン毎に製品版、試用版等全部で4つを作成している。
バージョンを管理している manifest.json も4つあり、バージョンアップの際にまとめて書き換える処理を作ったのでメモしてきます。

概要

プラグインファイルで、バージョンに関係しているものが下記で、バージョンアップ時にいちいち変更が必要。たまに忘れたり、間違えたりもする。
面倒なので、shelljs の sed を使って、書き換える。

  • 製品版、試用版等で、少しづつ構成が異なり、manifest.json が4つある
  • package.json で、プラグインをパッケージする kintone-plugin-packer の出力先のプラグインファイル名にバージョンを付与している。

sed とは

unix コマンドで、テキストファイルの文字列を正規表現で書き換える定番のツール。
node で使える sed を調べたら、shelljs があったので試してみたところ、問題なく使えた。

manifest.json のバージョンの書き換え

「"version": 9, 」の部分がプラグインのバージョン

manifest.json
{
  "manifest_version": 1,
  "version": 9,
  "type": "APP",
...
}

shelljs で、書き換えるのは、簡単。とりあえず、"10" で書き換える例

var shell = require('shelljs');
const vno = '10';
shell.sed('-i', '(^.*"version": *)([0-9]+)', '$1'+vno, 'manifest.json');
  • '-i': ファイルを直接書き換えるオプション
  • '(^ *"version": *)([0-9]+)': 「"version": 12」の文字列にマッチする正規表現
  • '$1'+vno: バージョンvno で変換する文字列
  • 'manifest.json': 書き換えるファイル名
    • 各ディレクトリの manifest.json を書き換えるのは、'./*/manifest.json'
    • ディレクトリにワイルドカードで簡単指定

バージョンをオプション指定にして、チェック

使いやすいように、バージョンチェックを入れて、実行ログ表示。
あと、package.json のファイル名変更を追加。
バージョンチェックの処理がほとんどですね。

コマンド内で他の処理と組み合わせるなら、終了時に process.exit(0); を入れて終了ステータスをセットする必要がありますが、単独で使うだけなので、そのまま終了してます。
※オプション指定のエラー時に、process.exit(1); にするといらないメッセージがいっぱいになり、かえってわかりにくい。

pver.js
const shell = require('shelljs');
console.log('plugin version set start.');

function errMessage(pmsg) {
    const path = require('path');
    const basename = path.basename(process.argv[1]);
    console.error(pmsg);
    console.error(`Usage: node ${basename} version\n`);
}

if (process.argv.length < 3) {
    errMessage('ver option need error!\n');
    return 1;
}
const vno = process.argv[2];  // plugin version number
if (isNaN(Number(vno))) {
    errMessage('ver option:"' + vno + '" is not numeric error!\n');
    return 1;
}
console.log('plugin version set: '+vno);

shell.sed('-i', '(^ *"version": *)([0-9]+)', '$1'+vno, './*/manifest.json');
shell.sed('-i', '(-plugin)([0-9]+)', '$1'+vno, 'package.json');

console.log('plugin version set end.\n');
return 0;
  • Usage:
    • node pver.js version

npm コマンドで実行

package.json
  "scripts": {
    "pver": "node scripts/pver.js",
    ...
  }
  • Usage:
    • npm run pver version

実行例

> npm run pver 10 
...
plugin version set start.
plugin version set: 10
plugin version set end.

vscode でのバージョン変更の確認

バージョン変更後は、vscode の変更ファイルをみると、簡単に変更ファイルと変更内容を確認できます。

最後に

mac だと標準で sed が使えますが、Windows だとwsl などを入れる必要があります。
node でしくみを作っておけば、どのOSでもそのまま使えて便利です。