Node.js v13.2.0 was released and it ships support for ES Modules. Official announcement explains the overview.
In ES Modules environment, global variables such as require
, exports
, module.exports
, __filename
, __dirname
are not available. require
, exports
, module.exports
are no longer necessary in favor of ESM, but we still need __filename
and __dirname
which can be calculated from import.meta.url
.
To make migration from commonjs to ES Modules smooth, dirname-filename-esm provides functions to create __dirname
and __filename
variables easily in ES Modules environment.
Usage is very straightforward.
// In ".mjs" script or a script under "type": "module" package
import { dirname, filename } from 'dirname-filename-esm';
const __dirname = dirname(import.meta);
const __filename = filename(import.meta);
// Use __dirname and __filename like under commonjs module
Two functions are exported.
dirname()
takesimport.meta
object and returns__dirname
value of the script.filename()
takesimport.meta
object and returns__filename
value of the script.
This package has zero dependency.