/empathic

A set of small Node.js utilities to understand your pathing needs.

Primary LanguageTypeScriptMIT LicenseMIT

empathic CI licenses

A set of small and fast Node.js utilities to understand your pathing needs.

Multiple submodules (eg, empathic/find) are offered, each of which are:

  • fast — 8x to 40x faster than popular alternatives
  • modern — based on of newer node:* native APIs
  • small — ranging from 200b to 500b in size
  • safe — zero-dependency & easy to read

Install

$ npm install empathic

Usage

import { resolve } from 'node:path';
import * as find from 'empathic/find';
import * as pkg from 'empathic/package';

// Assumed example structure:
let cwd = resolve('path/to/acme/websites/dashboard');

// Find closest "foobar.config.js" file
let file = find.up('foobar.config.js', { cwd });
//=> "/.../path/to/acme/foobar.config.js"

// Find closest "package.json" file
let pkgfile = pkg.up({ cwd });
//=> "/.../path/to/acme/package.json"

// Construct (optionally create) "foobar" cache dir
let cache = pkg.cache('foobar', { cwd, create: true });
//=> "/.../path/to/acme/node_modules/.cache/foobar"

API

empathic/access

Source · Size: 259b

Check for file access/permissions. Named fs.accessSync shortcuts.

empathic/find

Source · Benchmark · Size: 321b

Find files and/or directories by walking up parent directories.

empathic/package

Source · Benchmark · Size: 505b

Convenience helpers for dealing with package.json files and/or node_modules packages.

empathic/resolve

Source · Benchmark · Size: 419b

Resolve absolute paths to package identifiers, relative paths, file URL, and/or from other root directories.

empathic/walk

Source · Benchmark · Size: 218b

Collect all the parent directories of a target. Controlled via cwd and stop options.

License

MIT © Luke Edwards