express-dirname
v1.0.1
Published
A utility to access __dirname in Express.js for CommonJS and ES Modules
Maintainers
Readme
express-dirname
A lightweight utility to reliably access __dirname in Express.js applications, supporting both CommonJS and ES Modules. This package simplifies working with file paths in Node.js environments where __dirname may not be available, such as ES Modules.
Features
- Seamless support for CommonJS and ES Modules.
- TypeScript-ready with included type definitions.
- Zero dependencies for a lightweight footprint.
- Simple API to get the directory path in any Node.js environment.
Installation
Install the package using npm:
npm install express-dirnameUsage
CommonJS Example
In a CommonJS Express.js application, use __filename as the argument to getDirname:
const express = require('express');
const path = require('path');
const { getDirname } = require('express-dirname');
const app = express();
const __dirname = getDirname(__filename);
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'public', 'index.html'));
});
app.listen(3000, () => console.log('Server running on port 3000'));ES Modules Example
In an ES Modules Express.js application, pass import.meta.url to getDirname:
import express from 'express';
import path from 'path';
import { getDirname } from 'express-dirname';
const app = express();
const __dirname = getDirname(import.meta.url);
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'public', 'index.html'));
});
app.listen(3000, () => console.log('Server running on port 3000'));TypeScript Support
The package includes TypeScript definitions, so it works out of the box with TypeScript:
import express from 'express';
import path from 'path';
import { getDirname } from 'express-dirname';
const app = express();
const __dirname: string = getDirname(import.meta.url);
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'public', 'index.html'));
});
app.listen(3000, () => console.log('Server running on port 3000'));API
getDirname(metaUrl: string): string
Returns the directory path of the current module.
- Parameters:
metaUrl: In CommonJS, pass__filename. In ES Modules, passimport.meta.url. For CommonJS, if no argument is provided, it falls back to__dirname.
- Returns: A string representing the directory path.
- Throws: In ES Modules, an error is thrown if
metaUrlis not provided or invalid.
Why Use express-dirname?
Node.js ES Modules do not provide __dirname by default, which can complicate file path operations in Express.js applications. This package offers a unified solution to access the directory path across both CommonJS and ES Modules, ensuring compatibility and ease of use.
Contributing
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch:
git checkout -b feature/your-feature. - Commit your changes:
git commit -m 'Add your feature'. - Push to the branch:
git push origin feature/your-feature. - Open a pull request.
See CONTRIBUTING.md for more details.
License
This project is licensed under the MIT License.
Issues
Found a bug or have a feature request? Please open an issue on the GitHub Issues page.
Author
Created by Rakshit Waghmare.
