概要
ディレクトリを探索しながら再帰的に関数を実行する。
インストール
npm install @at_2nd/directory-scanner
用例
./test直下の.txtファイルの内容を一括取得 ただし、ファイル名の先頭がhoge_のファイルは無視する
const scan = require("@at_2nd/directory-scanner");
const fs = require("fs/promises");
(async ()=>
{
const dir = "./test";//スキャン対象
const option = //scan option
{
subdir:false,//サブディレクトリを探索しない
file:{txt:info=>fs.readFile(info.path,{encoding:"utf-8"})},//.txtを読み込んで返す
filter:info=>!/^hoge_/.test(info.name)//ファイル名の先頭がhoge_のファイルを無視する
};
const result = await scan(dir,option);
console.log(result);
})();
引数
dir:string
探索対象のパス
option:object
探索設定
*option.subdir
:boolean
サブディレクトリを探索するかの設定。デフォルトはtrue。
*option.dir
:async function(result)
ディレクトリ探索結果を加工するコールバック。
探索結果を受け取り、加工後の結果を返す。
デフォルトは無加工で返す。(result=>result)と等価。
*option.file
:boolean|async function(info)|object
ファイルを発見した時の挙動設定。デフォルトはtrue。コールバックにはinfoオブジェクトが渡される。
{
"filename":filename,//ファイル名
"name":name,//拡張子を除いたファイル名
"ext":extention,//拡張子
"path":fullPath//フルパス
};
*`false`:ファイルを無視する
*`true`:infoをそのまま返す。(info=>info)と等価。
*`function`:infoを受け取り、結果を返すコールバック。
*`object`:拡張子別の個別設定。拡張子をkeyとして、booleanもしくはfunctionの値を持つ。挙動は上記と同じ。
*option.filter
:boolean|async function(info)|object
ファイルを発見した時に有効なファイルとして扱うかどうかの設定。
*`false`:無効なファイルとする
*`true`:有効なファイルとする
*`function`:infoを受け取り、結果を返すコールバック。trueを返すと有効、falseを返すと無効。
*`object`:拡張子別の個別設定。拡張子をkeyとして、booleanもしくはfunctionの値を持つ。挙動は上記と同じ。