1.37.0 • Published 1 year ago

yafs v1.37.0

Weekly downloads
125
License
BSD-3-Clause
Repository
github
Last release
1 year ago

yafs

literally: "Yet Another FileSystem library"

there are numerous other abstractions... but I keep coming back to writing these functions...

What is it?

A (small) collection of common promise-based functions I keep having to write around the fs module:

  • copyFile
    • copy a file, with an option to overwite if existing
  • exists
    • tests if the path exists (file or folder or other)
  • folderExists
    • tests if a folder exists by path
  • fileExists
    • tests if a file exists by path
  • ls
    • list contents of folders, with options like recursion and regex-matching
  • mkdir
    • create a folder (won't error if it already exists)
  • rm
    • deletes a file or folder (recursive)
  • rmdir
    • deletes a folder only (will error if the folder isn't empty)
  • readFile
  • readTextFile
    • because I keep having to specify the options and I often want text files, not buffers
  • rename
    • attempt to rename a file or folder, with retry
    • if force is specified, will remove the target if it already exists
  • resolveHomePath
    • resolves a path relative to the user's home for the current platform
  • stat
    • attempts to stat on a provided path, returns null if the path is not found (no errors)
  • writeFile
  • writeTextFile

    • ensures target folders exist before writing
    • simpler interface for text file writing

Examples

const {
  ls,
  FsEntities,
  fileExists,
  folderExists,
  rm,
  rmdir,
  readFile,
  readTextFile,
  writeFile,
  writeTextFile      
} = require("yafs");
// ls
const immediates = await ls("/path/to/folder");
// ls can take an options parameter
// - all entities on options are optional
const tree = await ls("/path/to/folder", {
  recurse: true,
  fullPaths: true, // provide the full path, including /path/to/folder
  entities: FsEntities.all, // enum: files = 1, folders = 2, all = 3
  match: /\.js$/   // regex to match files you're interested in (*.js here)
});

// existence
const haveConfig = await fileExists("config.yaml");
const haveConfigDir = await folderExists("config");

// delete things
await rm("/path/to/file"); // deletes the file
await rm("/path/to/folder"); // recursively deletes the folder
await rmdir("/path/to/folder"); // deletes the empty folder

// reading files
const buffer = await readFile("/path/to/binary");
const text = await readTextFile("/path/to/file.txt");

// writing files
await writeTextFile("/path/to/file.txt", "hello, world!\nthis is nice");
await writeFile("/path/to/binary", Buffer.from([20, 21, 42]));
1.37.0

1 year ago

1.36.0

2 years ago

1.35.0

2 years ago

1.34.0

2 years ago

1.26.0

2 years ago

1.29.0

2 years ago

1.27.0

2 years ago

1.28.0

2 years ago

1.32.0

2 years ago

1.33.0

2 years ago

1.30.0

2 years ago

1.31.0

2 years ago

1.25.0

3 years ago

1.24.0

3 years ago

1.23.0

3 years ago

1.19.0

4 years ago

1.21.0

4 years ago

1.22.0

4 years ago

1.20.0

4 years ago

1.15.0

4 years ago

1.18.0

4 years ago

1.17.0

4 years ago

1.16.0

4 years ago

1.14.0

4 years ago

1.13.0

4 years ago

1.12.0

4 years ago

1.11.0

4 years ago

1.10.0

4 years ago

1.9.0

4 years ago

1.8.0

4 years ago

1.7.0

5 years ago

1.6.0

5 years ago

1.5.0

5 years ago

1.4.0

5 years ago

1.3.0

5 years ago

1.2.0

5 years ago

1.1.0

5 years ago

1.0.11

10 years ago

1.0.10

10 years ago

1.0.9

10 years ago

1.0.7

10 years ago

1.0.5

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago