1.37.0 • Published 26 days ago

yafs v1.37.0

Weekly downloads
125
License
BSD-3-Clause
Repository
github
Last release
26 days 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

26 days ago

1.36.0

5 months ago

1.35.0

7 months ago

1.34.0

8 months ago

1.26.0

10 months ago

1.29.0

9 months ago

1.27.0

10 months ago

1.28.0

10 months ago

1.32.0

8 months ago

1.33.0

8 months ago

1.30.0

8 months ago

1.31.0

8 months ago

1.25.0

1 year ago

1.24.0

2 years ago

1.23.0

2 years ago

1.19.0

2 years ago

1.21.0

2 years ago

1.22.0

2 years ago

1.20.0

2 years ago

1.15.0

3 years ago

1.18.0

3 years ago

1.17.0

3 years ago

1.16.0

3 years ago

1.14.0

3 years ago

1.13.0

3 years ago

1.12.0

3 years ago

1.11.0

3 years ago

1.10.0

3 years ago

1.9.0

3 years ago

1.8.0

3 years ago

1.7.0

4 years ago

1.6.0

4 years ago

1.5.0

4 years ago

1.4.0

4 years ago

1.3.0

4 years ago

1.2.0

4 years ago

1.1.0

4 years ago

1.0.11

9 years ago

1.0.10

9 years ago

1.0.9

9 years ago

1.0.7

9 years ago

1.0.5

9 years ago

1.0.4

9 years ago

1.0.3

9 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago