kintone プラグインの開発で、一つのプラグイン毎に製品版、試用版等全部で4つを作成している。
試用版は、製品版とほとんど同じで manifest.json など一部異なっているので、manifest.json を除き製品版ソースを試用版ディレクトリに丸ごとコピーして、プラグインにパッケージする。
node の fs-extra を使って、処理を作成したので、メモしておきます。
概要
manifest.json 以外のソースファイルを製品版から試用版にコピーするしくみを作成
- 製品版、試用版等で、少しづつ構成が異なり、manifest.json が4つある
- manifest.json 以外の製品版ソースファイルは、試用版にすべて必要
- 試用版にのみにあるソースファイルがある
- ファイル削除は、行わない
- 不要ファイルが生じたときは、マニュアル作業
fs-extra とは
- fs-extra
- node.js において、標準で利用できるァイル操作のライブラリ fs の機能拡張版
- manifest.json をコピー対象外にするのに、fs-extra の filter 機能を利用
ファイル丸ごとコピー処理
fs-extra の filter で、ファイル名が manifest.json を除外
- Usage:
- node dcody.js prod trial
- prod: 製品版ディレクトリ
- trial: 試用版ディレクトリ
- node dcody.js prod trial
dcopy.js
var fs = require('fs-extra');
function showUsageAndExit() {
const path = require('path');
const basename = path.basename(process.argv[1]);
console.error(`Usage: node ${basename} <sorce> <target>`);
process.exit(1);
}
const args = process.argv.slice(2);
if (args.length !== 2) {
showUsageAndExit();
}
const filterFunc = (src, dest) => {
return src.split('\\').pop() !== 'manifest.json'
}
fs.copy(args[0], args[1], { filter: filterFunc }, err => {
if (err) return console.error(err)
console.log('dcopy success!');
})
プラグインパッケージ処理に組み込み
- 製品版ソースを試用版にコピー
- 試用版プラグインをパッケージ
- 試用版プラグインをkinatone 環境にアップロード
npm-start-trial.js
const runAll = require("npm-run-all");
runAll(["copy-trial", "develop-trial", "upload-trial"], {
parallel: true,
stdout: process.stdout,
stdin: process.stdin
}).catch(({results}) => {
results
.filter(({code}) => code)
.forEach(({name}) => {
console.log(`"npm run ${name}" was failed`);
})
;
});
npm コマンドで実行 試用版プラグインの作成
- usage:
- npm run trial
package.json
"scripts": {
"copy-trial": "node scripts/dcopy.js prod trial",
"trial": "node scripts/npm-start-trial.js",
...
}