JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 23
  • Score
    100M100P100Q58061F
  • License CC0-1.0

Finding and Reading Files Made a Little Easier

Package Exports

  • find-and-read
  • find-and-read/find-and-read.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (find-and-read) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

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