@davidwells/fs-utils packages simple file-system helpers for Node.js tooling.
Full documentation, synced from the source README:
Lightweight filesystem utilities for Node.js with promise-based API and TypeScript support.
npm install @davidwells/fs-utilsconst fs = require('@davidwells/fs-utils')
// Example: Read directory recursively, excluding node_modules
const files = await fs.readDir('./src', {
recursive: true,
exclude: ['node_modules', /\.test\.js$/]
})fileExists(filePath)Check if a file or directory exists.
Parameters:
filePath (string) - Path to checkReturns: Promise<boolean> - True if file exists, false otherwise
Example:
const exists = await fs.fileExists('./package.json')
console.log(exists) // true or falsereadFile(filePath, options)Read data from a file. This is a direct export of Node.js fs.promises.readFile.
Parameters:
filePath (string) - Path to file to readoptions (string | Object) - Encoding or options objectReturns: Promise<Buffer | string> - File contents
Example:
const content = await fs.readFile('./package.json', 'utf8')
console.log(JSON.parse(content))writeFile(filePath, data, options)Write data to a file. This is a direct export of Node.js fs.promises.writeFile.
Parameters:
filePath (string) - Path to file to writedata (string | Buffer) - Data to writeoptions (string | Object) - Encoding or options objectReturns: Promise<void>
Example:
await fs.writeFile('./output.txt', 'Hello World', 'utf8')copyFile(src, dest, mode)Copy a file from source to destination. This is a direct export of Node.js fs.promises.copyFile.
Parameters:
src (string) - Source file pathdest (string) - Destination file pathmode (number) - Optional copy mode flagsReturns: Promise<void>
Example:
await fs.copyFile('./source.txt', './destination.txt')deleteFile(filePath)Delete a file, gracefully handling cases where the file doesn't exist (ignores ENOENT errors).
Parameters:
filePath (string) - Path to file to deleteReturns: Promise<void>
Example:
await fs.deleteFile('./temp.txt')
// Won't throw error if file doesn't existgetFileSize(filePath)Get file size information in bytes and megabytes.
Parameters:
filePath (string) - Path to the fileReturns: Promise<FileSizeResult> - Object with bytes and mb properties
Example:
const size = await fs.getFileSize('./video.mp4')
console.log(`Size: ${size.bytes} bytes (${size.mb} MB)`)directoryExists(dirPath)Check if a directory exists. This is an alias for fileExists().
Parameters:
dirPath (string) - Path to checkReturns: Promise<boolean> - True if directory exists, false otherwise
Example:
const exists = await fs.directoryExists('./src')createDir(directoryPath, recursive)Create a directory, optionally creating parent directories.
Parameters:
directoryPath (string) - Path to directory to createrecursive (boolean) - Whether to create parent directories (default: true)Returns: Promise<void>
Example:
// Creates parent directories if they don't exist
await fs.createDir('./path/to/nested/dir')
// Only create directory if parent exists
await fs.createDir('./existing-parent/new-dir', false)readDir(dirPath, options)Recursively read directory contents with optional filtering.
Parameters:
dirPath (string) - Directory path to readoptions (Object) - Options object
recursive (boolean) - Whether to read recursively (default: true)exclude (Array) - Patterns to exclude from results (default: [])
Returns: Promise<string[]> - Array of file paths
Example:
// Read all files recursively
const allFiles = await fs.readDir('./src')
// Read only immediate children (non-recursive)
const topLevel = await fs.readDir('./src', { recursive: false })
// Exclude node_modules and test files
const sourceFiles = await fs.readDir('./project', {
recursive: true,
exclude: ['node_modules', /\.test\.js$/, /\.spec\.js$/]
})copyDir(src, dest, recursive)Copy a directory and its contents.
Parameters:
src (string) - Source directory pathdest (string) - Destination directory pathrecursive (boolean) - Whether to copy recursively (default: true)Returns: Promise<void>
Example:
// Copy entire directory tree
await fs.copyDir('./src', './backup')
// Copy only immediate children
await fs.copyDir('./templates', './output', false)deleteDir(dirPath)Recursively delete a directory and all its contents.
Parameters:
dirPath (string) - Path to directory to deleteReturns: Promise<void>
Example:
await fs.deleteDir('./temp')This package includes TypeScript declarations. No need to install separate @types packages.
import * as fs from '@davidwells/fs-utils'
const files: string[] = await fs.readDir('./src', {
recursive: true,
exclude: ['node_modules']
})
const size: { bytes: number; mb: number } = await fs.getFileSize('./file.txt')This package includes a comprehensive test suite using uvu.
npm testMIT