functionsディレクトリィの組込関数の登録にはHTMLにscriptタグをいっぱい書かないと処理しないのでfunctionsディレクトリィのjsファイルの一覧をfunctions.jsonに手書きで作成し起動時に読込でimport() ×jsファイル数で関数を登録させてた
手書きしなくても
- ファイル一覧を取得
- jsonテキストに変換
- ファイルに出力
をググってサンプルを探し
// 組込関数まとめ.js
//
// path変数が示すディレクトリィに存在する拡張子がjsのファイルの一覧を
// fname変数で指定したファイルにJSON形式で出力する
//
import { default as fs } from "fs";
const path = './js/spreadSheet/functions/';
// ディレクトリィのファイルリストを取得
const files = fs.readdirSync(path)
.filter((fname) => {
// 拡張子がjsのファイルのみ残す
const [name, ext] = fname.split('.');
return (ext === 'js');
})
;
// ファイル一覧(型:配列)をJSON形式のテキストに変換する
const text = JSON.stringify(files, "", 2);
// 非同期にファイルに書き込む
const fname = "functions.json";
fs.writeFile(`${path}${fname}`, text, (err) => {
if (err) {
console.log(`'${path}${fname}' file write err\n${err.message}\n${err.stack.split('\\n')}`);
} else {
console.log(`'${path}${fname}' file write\n'${text}'\n`);
}
});
// end of 関数集計.js/
繋げたら出来ました。
たまにはこんなこともあるんだなぁ~
ただし、実行してみると
[MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type ・・・
と長い注意書きがコンソールに出てきた。
package.jsonにtype=’model’を書いて無いから、common jsだと思って実行したけど、import文があるからES-moduleのハズだからやっといたよ?的な内容だった。
やっぱり、何事も無く無事に完了するワケがなかった。(合掌