Skip to content
generated from darkobits/ts-template

⚙️ Cross-environment __dirname / __filename replacement for ESM.

License

Notifications You must be signed in to change notification settings

darkobits/fd-name

Repository files navigation

Backwards-compatible replacement for __filename / __dirname in ESM environments.

Install

npm install @darkobits/fd-name

This package is a hybrid module that exports ESM and CJS. If you are authoring ESM, CJS, or more likely authoring ESM-like syntax that is being transpiled to CJS, you can use this package today and transition to pure ESM in the future with no breaking changes. ✨

Use

/foo/bar/unicorns.js

import { filename, dirname } from '@darkobits/fd-name';

filename() //=> '/foo/bar/unicorns.js'
dirname() //=> '/foo/bar'

This is a bit less awkward than:

import path from 'path';
import { fileURLToPath } from 'url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

Which has to be repeated in every file you want to use these values in, as import.meta is specific to the local module.

⚠️ Note: This package removes the file:// protocol prefix from paths in ESM as most tooling does not play nicely with it, including the built-in path module.


About

⚙️ Cross-environment __dirname / __filename replacement for ESM.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published