find-and-read
v1.2.0
Published
Finding and Reading Files Made a Little Easier
Downloads
101
Maintainers
Readme
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