An ESM/Jest/Node-friendly path utility for resolving file and directory paths in ESM environments.
- Unified API for ESM: pass either
import.metaor a string (like__dirname) - Works seamlessly in Node.js, Jest, and modern ESM environments
- TypeScript type definitions included
- Simple, dependency-free, and well-tested
pathUrl,resolvePath, andrelativePathhelpers based onimport.metafileUrlToPathfor converting file URLs back to filesystem paths
- Node.js 26 or newer
- Native ESM support
npm install @eliware/pathimport path, { fileUrlToPath, pathUrl, relativePath, resolvePath } from '@eliware/path';
// for ESM, we need to pass import.meta
const envFile = path(import.meta, ".env");
console.log(envFile);
// Get a file URL href for dynamic import
const envFileUrl = pathUrl(import.meta, ".env");
console.log(envFileUrl);
// import(envFileUrl).then(mod => ...);// ESM
import { pathUrl } from '@eliware/path';
const mod = await import(pathUrl(import.meta, './my-module.mjs'));Returns the absolute path to the current file or directory. Pass import.meta (ESM) or a string (e.g. __dirname). Throws if unavailable.
Returns the absolute path to the current directory. Pass import.meta (ESM) or a string (e.g. __dirname). Throws if unavailable.
Joins the current dirname (from import.meta or a string) with provided segments to form an absolute path.
Returns a file URL href string for the resolved path, suitable for use with dynamic import() on all platforms.
Pass import.meta or a directory string to the helpers. Missing or invalid bases throw an error. Paths use the host platform’s native separators; pathUrl() returns a file URL suitable for dynamic imports.
npm test
npm run test:gaps
npm run lint
npm run typecheck
npm run packPath helpers do not sandbox or validate filesystem access. Treat user-controlled path segments as untrusted and apply application-specific traversal and permission checks before reading or writing files.
Type definitions are included:
export function getCurrentFilename(metaOrDir?: ImportMeta | string): string;
export function getCurrentDirname(metaOrDir?: ImportMeta | string, dirnameFn?: (path: string) => string): string;
export const path: (metaOrDir: ImportMeta | string, ...segments: string[]) => string;
export function pathUrl(metaOrDir: ImportMeta | string, ...segments: string[]): string;
export default path;For help, questions, or to chat with the author and community, visit:


