1
0

More than 3 years have passed since last update.

kintone プラグイン開発メモ 丸ごとファイルコピー

Last updated at Posted at 2021-08-20

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: 試用版ディレクトリ
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",
    ...
  }
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0