npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

file-easy

v1.0.5

Published

Working with the Node.js file system can be cumbersome. File-easy simplifies common file operations with a clean and easy-to-use API, making file management a breeze.

Readme

file-easy

File utilities to speed up creating document files, setting default extension, and getting a slug from a string. file-easy provides a simple, lightweight, and easy-to-use set of functions for common file-related tasks. If you're tired of writing boilerplate code for handling filenames, creating text files, or generating URL-friendly slugs, file-easy simplifies these operations so you can focus on your core application logic. It's particularly well-suited for projects that frequently handle text files or need to sanitize filenames for web use. No more complex regex or manual string manipulation – just clean, efficient file handling.

npm npm License Build Status njsscan sarif Node.js CI CodeQL Advanced DeepScan grade

Installation

npm i file-easy

Usage

.slug()

const fileEasy = require('file-easy')

// getting a slug
let fn = 'source Filename';
let slug = fileEasy.slug(fn)
console.log('Slug:', slug)

Will show:

Slug: source-filename
const fileEasy = require('file-easy')

let names = [
    'Simple_File$Goes%Here',
    '%%Welcome**    Buddy%&^#$%'
];
names.forEach((name) => {
    console.log('Source: "', name, '" is:', fileEasy.slug(name))
})

Will show:

Source: " Simple_File$Goes%Here " is: " simple-file-goes-here
Source: " %%Welcome**    Buddy%&^#$% " is: " welcome-buddy

.setDefaultExtension()

const fileEasy = require('file-easy')

// f1 is filename.js (no extension in original, apply extension)
let f1 = fileEasy.setDefaultExtension('filename', '.js)

// f2 is filename.js (extension already exists)
let f2 = fileEasy.setDefaultExtension('filename.js', '.json')

// f3 is filename. (extension starts with . in original)
let f3 = fileEasy.setDefaultExtension('filename.', '.js')

.saveDocument()

const fileEasy = require('file-easy')

let filename = './docs/sample.txt'
let content = 'String to go in'

/**
 * Creates the `sample.txt` file in `./docs` folder
 * If path does not exist, it will create it (e.g. `./docs`)
 * The file is saved as a utf-8 format (standard format)
 */
fileEasy.saveDocument(filename, content)

Functions

saveDocument(filename, content)

Save content in a file using utf8 format.

Kind: global function
Throws:

  • Error If input is invalid or if there was an error during the save process.

| Param | Type | Description | | --- | --- | --- | | filename | string | The filename to create. It can also include a path ending with the filename. Path will be created if not exists. | | content | string | The content to place in the file. |

setDefaultExtension(filename, extension) ⇒ string

Append specified extension if needed.

Kind: global function
Returns: string - filename with either existing or specified extension
Throws:

  • TypeError If filename or extension is not a string.
  • Error If extension is empty or doesn't start with a dot.

| Param | Type | Description | | --- | --- | --- | | filename | string | The filename to check for an existing extension. | | extension | string | The extension to append if filename has no extension. It should start with a dot (e.g. .txt) |

slug(s) ⇒ string

Convert a string into an identifier.

Kind: global function
Returns: string - The identifier string.

The following operations are performed on the string:

  1. Trim and convert to lower case.
  2. Remove diacritics (transliterate or remove non-ASCII characters).
  3. Replace spaces and special characters with hyphens, allowing underscores.
  4. Replace multiple hyphens with a single hyphen.
  5. Remove leading and trailing hyphens.

| Param | Type | Description | | --- | --- | --- | | s | string | The string to convert. |

Author

Ion Gireada - shytiger[at]yahoo.com

License

This project is licensed under the MIT License - see the LICENSE file for details.