smart-filename 📁
NPM package designed for handling filenames safely and effectively. It provides utilities to format, sanitize, validate, truncate, and extract file extensions while ensuring compatibility across different operating systems. This package is particularly useful for developers dealing with file management, uploads, or generating SEO-friendly filenames.
📦 Installation
Install via npm
npm i smart-filename
Install via yarn
yarn add smart-filename
🚀 Usage
const smartFilename = require('smart-filename');
// Example 1️⃣: Format a filename (remove special chars, diacritics, and apply slugification)
console.log(smartFilename.formatFilename("Müller's Report: 2025.pdf"));
// Output: "mueller-s-report-2025.pdf"
// Example 2️⃣: Truncate a long filename to a safe length
console.log(smartFilename.truncateFilename("very-long-filename-that-needs-to-be-shortened.txt", 20));
// Output: "very-long-filename.txt"
// Example 3️⃣: Get a safe file extension
console.log(smartFilename.getSafeExtension("document.final.version.docx"));
// Output: "docx"
// Example 4️⃣: Sanitize a full file path
console.log(smartFilename.sanitizePath("/user/uploads/My*Illegal:File.txt"));
// Output: "\user\uploads\my-illegal-file-txt"
// Example 5️⃣: Validate if a filename is safe
console.log(smartFilename.isValidFilename("safe_file.txt"));
// Output: true
console.log(smartFilename.isValidFilename("invalid/file|name.txt"));
// Output: false
formatFilename
with options:
// Example 1️⃣: Custom Separator
console.log(smartFilename.formatFilename("Müller's Report: 2025.pdf", { separator: "_" }));
// Output: "mueller_s_report_2025.pdf"
// Example 2️⃣: Limit Length
console.log(smartFilename.formatFilename("Very Long File Name with Extra Details.txt", { maxLength: 20 }));
// Output: "very-long-file-name.txt"
// Example 3️⃣: Preserve Case
console.log(smartFilename.formatFilename("My Cool File Name.JPG", { lowercase: false }));
// Output: "My-Cool-File-Name.JPG"
// Example 4️⃣: Remove File Extension
console.log(smartFilename.formatFilename("My_Resume_Final.docx", { removeExtension: true }));
// Output: "my-resume-final"
// Example 5️⃣: Combine Multiple Options
console.log(smartFilename.formatFilename("Résumé Final Version (2025).PDF", { separator: "_", lowercase: false, removeExtension: true }));
// Output: "Resume_Final_Version_2025"
📖 API Reference
Function | Description |
---|---|
formatFilename |
Formats a filename by normalizing text, replacing special characters, and applying custom rules. |
getExtension |
Returns the file extension from a given filename. |
removeExtension |
Returns the filename without its extension. |
sanitizeFilename |
Removes unsafe characters to ensure filenames are system-safe. |
truncateFilename |
Truncates a filename to a specified length while preserving the extension. |