find-and-read
TypeScript icon, indicating that this package has built-in type declarations

1.2.0 • Public • Published

find-and-read

Finding and Reading Files Made a Little Easier

what?

This library exposes a single function findAndRead, which takes in a filename. It iteratively searches up, down and across your folder hierarchy for the file. When it finds the file, it runs NodeJS' built-in readFileSync on it.

why?

I work on a lot of projects that separate the data used for tests from the actual test scripts. It's often a pain to determine the correct path to pass into readFileSync. My code would often look like readFileSync("../../../test-data/images/example.png"). It would be a lot easier if I could just run findAndRead("example.png"), so I created a library that does that.

features

  • Dependency Free (only uses NodeJS builtins)
  • Automatically Finds Closest Matching File (least amount of change directory steps)
  • Small Code Base
  • Memory Efficient
  • TypeScript Support

install

npm install find-and-read

basic usage

Automatically find the closest file with the given name and run readFileSync on it

const findAndRead = require("find-and-read");

const buffer = findAndRead("example.png");

advanced usage

You can pass in the same options as you would to readFileSync, "encoding" and "flag";

const findAndRead = require("find-and-read");

const json = findAndRead("example.json", { encoding: 'utf-8' });

adjusting start

When a file calls findAndRead, it will start looking in the folder of the caller file. When you run findAndRead in a REPL, it will start looking in the folder where you started the REPL. If you would like to start at a different place, pass in a start parameter like below:

const findAndRead = require("find-and-read");

// look for an image starting in the /tmp folder
const buffer = findAndRead("image.jpg", { start: '/tmp' });

custom stop function

By default, findAndRead doesn't navigate into node_modules and hidden folders (like .git). When run inside a git repository, it also doesn't navigate up outside the git repo. You can turn this off by passing stop: null or create own custom function for determining when to stop on a path.

const findAndRead = require("find-and-read");

const buffer = findAndRead("test-image.jpg", {
  stop: ({
    dirpath, // the path to the directory that we are navigating to
    from, // the path to the directory that we are navigating from
    direction // "up" or "down"
  }) => {
    // don't search inside of the env folder
    return dirpath.includes('env');
  }
});

warnings

By default, findAndRead will issue a console.warn if it's unable to find a file. You can turn off this behavior by passing in warn: false.

const findAndRead = require("find-and-read");

findAndRead("unfindable.txt");
// logs `[find-and-read] unable to find "unfindable.txt"`

findAndRead("unfindable.txt", { warn: false });
// nothing is logged

Package Sidebar

Install

npm i find-and-read

Weekly Downloads

63

Version

1.2.0

License

CC0-1.0

Unpacked Size

16 kB

Total Files

5

Last publish

Collaborators

  • danieljdufour