Node.js module to list all files in a directory or any subdirectories.
This package isESM only: Node 12+ is needed to use it and it must beimport instead ofrequire.
npminstall recursive-readdir-filesIf you still want to use in CommonJS, you can use dynamicimport() to load.
const recursiveReaddirFiles=awaitimport('recursive-readdir-files');// Fix compiling in typescript.// https://github.com/microsoft/TypeScript/issues/43329#issuecomment-922544562const{ getExt, recursiveReaddirFiles}=await(Function('return import("recursive-readdir-files")')())asPromise<typeofimport("recursive-readdir-files")>;importrecursiveReaddirFilesfrom'recursive-readdir-files';const files=awaitrecursiveReaddirFiles(process.cwd(),{ignored:/\/(node_modules|\.git)/});// `files` is an arrayconsole.log(files);// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓// [// {// dev: 16777233,// mode: 33188,// nlink: 1,// uid: 501,// gid: 20,// rdev: 0,// blksize: 4096,// ino: 145023089,// size: 89,// blocks: 8,// atimeMs: 1649303678077.934,// mtimeMs: 1649303676847.1777,// ctimeMs: 1649303676847.1777,// birthtimeMs: 1649301118132.6782,// atime: 2022-04-07T03:54:38.078Z,// mtime: 2022-04-07T03:54:36.847Z,// ctime: 2022-04-07T03:54:36.847Z,// birthtime: 2022-04-07T03:11:58.133Z,// name: 'watch.ts',// path: '/Users/xxx/watch.ts',// ext: 'ts'// },// // ...// ]Or
recursiveReaddirFiles(process.cwd(),{ignored:/\/(node_modules|\.git)/},(filepath, state)=>{console.log(filepath);// 👉 /Users/xxx/watch.tsconsole.log(state.isFile());// 👉 trueconsole.log(state.isDirectory());// 👉 falseconsole.log(state);// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓// {// dev: 16777233,// mode: 33188,// nlink: 1,// uid: 501,// gid: 20,// rdev: 0,// blksize: 4096,// ino: 145023089,// size: 89,// blocks: 8,// atimeMs: 1649303678077.934,// mtimeMs: 1649303676847.1777,// ctimeMs: 1649303676847.1777,// birthtimeMs: 1649301118132.6782,// atime: 2022-04-07T03:54:38.078Z,// mtime: 2022-04-07T03:54:36.847Z,// ctime: 2022-04-07T03:54:36.847Z,// birthtime: 2022-04-07T03:11:58.133Z,// name: 'watch.ts',// path: '/Users/xxx/watch.ts',// ext: 'ts'// }})exportinterfaceRecursiveReaddirFilesOptions{/** * Ignore files * @example `/\/(node_modules|\.git)/` */ ignored?: RegExp;/** * Specifies a list of `glob` patterns that match files to be included in compilation. * @example `/(\.json)$/` */ include?: RegExp;/** * Specifies a list of files to be excluded from compilation. * @example `/(package\.json)$/` */ exclude?: RegExp;/** Provide filtering methods to filter data. */ filter?:(item: IFileDirStat)=>boolean;}import fsfrom'node:fs';exportinterfaceIFileDirStatextendsPartial<fs.Stats>{/** * @example `/a/sum.jpg` => `sum.jpg` */ name:string;/** * @example `/basic/src/utils/sum.ts` */ path:string;/** * @example `/a/b.jpg` => `jpg` */ ext?:string;}declaretypeCallback=(filepath:string, stat: IFileDirStat)=>void;exportdefaultfunctionrecursiveReaddirFiles(rootPath:string, options?: RecursiveReaddirFilesOptions, callback?: Callback):Promise<IFileDirStat[]>;export{ recursiveReaddirFiles};exportdeclareconstgetStat:(filepath:string)=>Promise<IFileDirStat>;/** * Get ext * @param {String} filePath `/a/b.jpg` => `jpg` */exportdeclareconstgetExt:(filePath:string)=>string;As always, thanks to our amazing contributors!
Made withaction-contributors.
Licensed under the MIT License.