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/pathimportpath,{fileUrlToPath,pathUrl,relativePath,resolvePath}from'@eliware/path';// for ESM, we need to pass import.metaconstenvFile=path(import.meta,".env");console.log(envFile);// Get a file URL href for dynamic importconstenvFileUrl=pathUrl(import.meta,".env");console.log(envFileUrl);// import(envFileUrl).then(mod => ...);// ESMimport{pathUrl}from'@eliware/path';constmod=awaitimport(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:
exportfunctiongetCurrentFilename(metaOrDir?: ImportMeta|string): string;exportfunctiongetCurrentDirname(metaOrDir?: ImportMeta|string,dirnameFn?: (path: string)=>string): string;exportconstpath: (metaOrDir: ImportMeta|string, ...segments: string[])=>string;exportfunctionpathUrl(metaOrDir: ImportMeta|string, ...segments: string[]): string;exportdefaultpath;For help, questions, or to chat with the author and community, visit:


