An open API service indexing awesome lists of open source software.

https://github.com/correia-jpv/fucking-awesome-micro-npm-packages

A curated list of small, focused npm packages. With repository stars⭐ and forks🍴
https://github.com/correia-jpv/fucking-awesome-micro-npm-packages

List: fucking-awesome-micro-npm-packages

awesome awesome-list javascript js list npm npm-module npm-package npm-scripts npmjs packages

Last synced: 28 days ago
JSON representation

A curated list of small, focused npm packages. With repository stars⭐ and forks🍴

Awesome Lists containing this project

README

        

# Awesome Micro npm Packages [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)

> A curated list of small, focused Node.js modules.

*Inspired by the 355903⭐  28908🍴 [awesome](https://github.com/sindresorhus/awesome)) list thing.*

## Articles

*      ?⭐      ?🍴 [One-line node modules](https://github.com/sindresorhus/ama/issues/10))
*   1551⭐     86🍴 [Module best practices](https://github.com/mattdesl/module-best-practices))
* [Evaluating Packages Part 1 - Turn to community](http://bytearcher.com/articles/evaluating-packages-1-check-community/)
* [Evaluating Packages Part 2 - Review repository](http://bytearcher.com/articles/evaluating-packages-2-review-repository/)
* 🌎 [Small modules: it’s not quite that simple](medium.com/@Rich_Harris/small-modules-it-s-not-quite-that-simple-3ca532d65de4)
* 🌎 [In Defense of Hyper Modular JavaScript](medium.freecodecamp.com/in-defense-of-hyper-modular-javascript-33934c79e113)
* [Tiny npm package: Guidelines to create a Node.js module following the small package philosophy](http://g14n.info/2015/12/tiny-npm-package/)
* 🌎 [The cost of small modules](nolanlawson.com/2016/08/15/the-cost-of-small-modules/)

## Modules

### Array

*     23⭐     32🍴 [is-sorted](https://github.com/dcousens/is-sorted)) - A small module to check if an Array is sorted.
*     11⭐     14🍴 [array-first](https://github.com/jonschlinkert/array-first)) - Get the first element or first n elements of an array.
*     35⭐     14🍴 [array-last](https://github.com/jonschlinkert/array-last)) - Return the last element in an array.
*     59⭐     16🍴 [arr-flatten](https://github.com/jonschlinkert/arr-flatten)) - Recursively flatten an array or arrays.
*     24⭐      7🍴 [dedupe](https://github.com/seriousManual/dedupe)) - Remove duplicates from an array.
*     25⭐      6🍴 [array-range](https://github.com/mattdesl/array-range)) - Creates a new array with given range.
*     46⭐     18🍴 [arr-diff](https://github.com/jonschlinkert/arr-diff)) - Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.
*     42⭐      5🍴 [filled-array](https://github.com/sindresorhus/filled-array)) - Returns an array filled with the specified input
*      4⭐      0🍴 [map-array](https://github.com/parro-it/map-array)) - Map object keys and values into an array.
*     16⭐      1🍴 [in-array](https://github.com/jonschlinkert/in-array)) - Return true if any of passed values exists in array - faster than using indexOf.
*    118⭐      8🍴 [unordered-array-remove](https://github.com/mafintosh/unordered-array-remove)) - Efficiently remove an element from an unordered array without doing a splice.
*      7⭐      4🍴 [array-swap](https://github.com/michaelzoidl/swap-array)) - Swap position of two items in an array.
*      5⭐      2🍴 [mirrarray](https://github.com/johnwquarles/mirrarray)) - Creates a keymirror object from an array of valid keys.
*     61⭐     14🍴 [group-array](https://github.com/doowb/group-array)) - Group array of objects into lists.
*     12⭐      0🍴 [array.chunk](https://github.com/zhiyelee/array.chunk)) - Split array/TypedArray to chunks of given size.
*     70⭐      5🍴 [fast-cartesian](https://github.com/ehmicky/fast-cartesian)) - Fast cartesian product.

### String

*    239⭐     26🍴 [decamelize](https://github.com/sindresorhus/decamelize)) - Convert a camelized string into a lowercased one with a custom separator: unicornRainbow → unicorn_rainbow.
*     44⭐      8🍴 [pad-left](https://github.com/jonschlinkert/pad-left)) - Left pad a string with zeros or a specified string.
*     35⭐      3🍴 [to-camel-case](https://github.com/ianstormtaylor/to-camel-case)) - Convert a string to a camel case.
*     11⭐      2🍴 [to-capital-case](https://github.com/ianstormtaylor/to-capital-case)) - Convert a string to a capital case.
*      4⭐      3🍴 [to-constant-case](https://github.com/ianstormtaylor/to-constant-case)) - Convert a string to a constant case.
*      5⭐      0🍴 [to-dot-case](https://github.com/ianstormtaylor/to-dot-case)) - Convert a string to a dot case.
*     16⭐      5🍴 [to-no-case](https://github.com/ianstormtaylor/to-no-case)) - Remove an existing case from a string.
*      3⭐      0🍴 [to-pascal-case](https://github.com/ianstormtaylor/to-pascal-case)) - Convert a string to a pascal case.
*      6⭐      0🍴 [to-sentence-case](https://github.com/ianstormtaylor/to-sentence-case)) - Convert a string to a sentence case.
*     26⭐      2🍴 [to-snake-case](https://github.com/ianstormtaylor/to-snake-case)) - Convert a string to a snake case.
*      6⭐      3🍴 [to-space-case](https://github.com/ianstormtaylor/to-space-case)) - Convert a string to a space case.
*     18⭐      6🍴 [to-title-case](https://github.com/ianstormtaylor/to-title-case)) - Convert a string to a title case.
*   1073⭐     94🍴 [node-slug](https://github.com/dodo/node-slug)) - slugifies even utf-8 chars.
*      0⭐      2🍴 [rtrim](https://github.com/sergejmueller/rtrim)) - Strip whitespace - or other characters - from the end of a string.
*     34⭐      1🍴 [slice.js](https://github.com/hustcc/slice.js)) - Javascript library to enhance String.substring / Array.slice with python slice style.
*    412⭐     38🍴 [strip-ansi](https://github.com/chalk/strip-ansi)) - Strip ANSI escape codes.
*    493⭐     52🍴 [striptags](https://github.com/ericnorris/striptags)) - An implementation of PHP's strip_tags in Node.js.
*      1⭐      1🍴 [parse-next-json-value](https://github.com/ErikOnBike/parse-next-json-value)) - Parse next JSON value from string allowing extraneous characters after value.
*      2⭐      0🍴 [pluralize](https://github.com/DaniAkash/pluralizer)) - A very tiny library to pluralize words

### Date & Time

*   1148⭐     67🍴 [pretty-ms](https://github.com/sindresorhus/pretty-ms)) - Convert milliseconds to a human readable string: 1337000000 → 15d 11h 23m 20s.
*     17⭐      3🍴 [hirestime](https://github.com/seriousManual/hirestime)) - A wrapper around the built-in high resolution timer which simplifies the calculation of timestamps.
*      1⭐      0🍴 [periods](https://github.com/timruffles/periods)) - Defined time-periods constants for Javascript, in milliseconds.
*   2070⭐    125🍴 [fecha](https://github.com/taylorhakes/fecha)) - Javascript Date formatting and parsing.
*      3⭐      1🍴 [akamai-time-reference](https://github.com/jucrouzet/akamai-time-reference)) - Get reference time using Akamai's time reference service.
*   5357⭐    408🍴 [timeago.js](https://github.com/hustcc/timeago.js)) - A tiny(~1.7kb) library used to format date with `*** time ago` statement.
*      1⭐      0🍴 [count-days-in-month](https://github.com/shinnn/count-days-in-month)) - Get the number of days in a given month.
*    111⭐     17🍴 [time-stamp](https://github.com/jonschlinkert/time-stamp)) - Get a formatted timestamp.
*    249⭐     10🍴 [twas](https://github.com/vutran/twas)) - Generate a relative time string (Example: "3 seconds ago")

### Object

*    212⭐     42🍴 [map-obj](https://github.com/sindresorhus/map-obj)) - Map object keys and values into a new object.
*    101⭐      9🍴 [filter-obj](https://github.com/sindresorhus/filter-obj)) - Filter object keys and values into a new object.
*     26⭐      5🍴 [object-values](https://github.com/sindresorhus/object-values)) - Get the values of an object.
*      2⭐      0🍴 [object-pairs](https://github.com/eush77/object-pairs)) - Turn an object into list of [key, value] pairs for mapping, iterating or other purposes.
*      4⭐      1🍴 [zipmap](https://github.com/landau/zipmap)) - Returns a map with the keys mapped to the corresponding vals. zipmap also accepts a single value of objects or pairs.
*     11⭐      2🍴 [just-pluck](https://github.com/jarofghosts/just-pluck)) - Pluck without the madness.
*    790⭐    109🍴 [deep-equal](https://github.com/substack/node-deep-equal)) - Node's assert.deepEqual() algorithm as a standalone module.
*    247⭐     33🍴 [deep-assign](https://github.com/sindresorhus/deep-assign)) - Recursive Object.assign().
*    277⭐     41🍴 [set-value](https://github.com/jonschlinkert/set-value)) - Create nested values and any intermediaries dot notation (`'a.b.c'`) paths.
*    284⭐     21🍴 [get-value](https://github.com/jonschlinkert/get-value)) - Use property paths (a.b.c) to get a nested value from an object.
*     26⭐      6🍴 [has-value](https://github.com/jonschlinkert/has-value)) - Returns true if a value exists, false if empty. Works with deeply nested values using dot notation (`'a.b.c'`) paths.
*      1⭐      2🍴 [has-key-deep](https://github.com/ryanaghdam/has-key-deep)) - Deep-search objects for keys. Keys can be searched by providing an array of keys, or using a dot-notiation.
*      3⭐      1🍴 [flatkeys](https://github.com/ricardobeat/flatkeys)) - Flatten object key hierarchies into a list of strings using a custom separator.
*     21⭐      4🍴 [flatten-obj](https://github.com/watson/flatten-obj)) - Converts an object literal with deeply nested nodes to a simple key/value object.
*     11⭐      4🍴 [is-empty-object](https://github.com/gummesson/is-empty-object)) - Check if an object is empty.
*    313⭐     47🍴 [stringify-object](https://github.com/yeoman/stringify-object)) - Stringify an object/array like JSON.stringify just without all the double-quotes.
*     35⭐      4🍴 [sorted-object](https://github.com/domenic/sorted-object)) - Returns a copy of an object with its keys sorted.
*      4⭐      0🍴 [static-props](https://github.com/fibo/static-props)) - Defines static object attributes using `Object.defineProperties`
*      0⭐      1🍴 [missing-deep-keys](https://github.com/vladgolubev/missing-deep-keys)) - Returns an array of keys from first object that are missing in second.
*      3⭐      0🍴 [has-own-property](https://github.com/LinusU/has-own-property)) - Check if an object has a local property.
*      2⭐      1🍴 [merge-objects](https://github.com/shevaroller/node-merge-objects)) - Deep-merge two objects. Arrays that are values of the same object key get concatenated.
*   1103⭐     95🍴 [deep-object-diff](https://github.com/mattphillips/deep-object-diff)) - Deep diff two JavaScript Objects while preserving the data structure. Including nested structures of Arrays and Objects.

### Function

*     56⭐      3🍴 [compose-function](https://github.com/stoeffel/compose-function)) - Compose a new function from smaller functions `f(g(x))`.
*    315⭐     19🍴 [curry](https://github.com/dominictarr/curry)) - A curry function without anything too clever.
*    222⭐     29🍴 [once](https://github.com/isaacs/once)) - Run a function exactly one time.
*      9⭐      2🍴 [deep-bind](https://github.com/jonschlinkert/deep-bind)) - Bind a context to all functions in an object, including deeply nested functions.
*      ?⭐      ?🍴 [identity-function](https://github.com/substack/identity-function)) - Always return the input argument.
*   1112⭐     56🍴 [mem](https://github.com/sindresorhus/mem)) - An optimization technique used to speed up consecutive function calls by caching the result of calls with identical input.
*   1040⭐    107🍴 [throttle-debounce](https://github.com/niksy/throttle-debounce)) - Throttle/debounce your functions.
*     46⭐      2🍴 [compose-tiny](https://github.com/hipstersmoothie/compose-tiny)) - A very tiny and fast compose function.

### Math

*    234⭐     13🍴 [is-even](https://github.com/jonschlinkert/is-even)) - A good way to tell if a number is even or not (avoids type issues). Uses `is-odd` and `is-number` under the hood.
*    270⭐     51🍴 [is-number](https://github.com/jonschlinkert/is-number)) - Returns `true` if the value is a number.
*    340⭐     74🍴 [is-odd](https://github.com/jonschlinkert/is-odd)) - A good way to tell if a number is odd or not (avoids type issues). Uses `is-number` under the hood.
*      7⭐      1🍴 [easy-math.js](https://github.com/kingzez/easy-math.js)) - A tiny easy math library including addition, multiplication, subtraction, and division.
*      2⭐      0🍴 [my-prime](https://github.com/jinnatul/my-prime)) - A good way to tell if a number is prime or not.
*      1⭐      0🍴 [fun-gcd](https://github.com/zubayerhimel/fun-gcd)) - A tiny math library to get gcd of two numbers using Euclidean algorithm

### Stream
*   1901⭐    106🍴 [through2](https://github.com/rvagg/through2)) - Tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise.
*     35⭐      4🍴 [through2-filter](https://github.com/brycebaril/through2-filter)) - A through2 to create an Array.prototype.filter analog for streams.
*     70⭐      2🍴 [through2-map](https://github.com/brycebaril/through2-map)) - A through2 to create an Array.prototype.map analog for streams.
*     15⭐      1🍴 [stream-spigot](https://github.com/brycebaril/node-stream-spigot)) - A readable stream generator, useful for testing or converting simple functions into Readable streams.
*    577⭐     64🍴 [concat-stream](https://github.com/maxogden/concat-stream)) - writable stream that concatenates strings or data and calls a callback with the result.
*   1927⭐    166🍴 [JSONStream](https://github.com/dominictarr/JSONStream)) - streaming JSON.parse and stringify
*      3⭐      0🍴 [through2-map-promise](https://github.com/RangerMauve/through2-map-promise)) - A small promise-based wrapper for through2.
*    911⭐     61🍴 [pump](https://github.com/mafintosh/pump)) - pipe streams together and close all of them if one of them closes.
*    345⭐     37🍴 [split](https://github.com/dominictarr/split)) - Break up a stream and reassemble it so that each line is a chunk.
*    110⭐     21🍴 [is-stream](https://github.com/sindresorhus/is-stream)) - Check if something is a Node.js stream.
*    104⭐      3🍴 [syncthrough](https://github.com/mcollina/syncthrough)) - Transform your data as it pass by, synchronously.

### Promise

*   1504⭐     67🍴 [pify](https://github.com/sindresorhus/pify)) - Promisify a callback-style function.
*      9⭐      2🍴 [promise-all-props](https://github.com/Siilwyn/promise-all-props)) - Like `Promise.all` but for object properties.
*     87⭐      9🍴 [sleep-promise](https://github.com/brummelte/sleep-promise)) - Resolves a promise after a specified delay.
*    280⭐     31🍴 [is-promise](https://github.com/then/is-promise)) - Test whether an object looks like a promises-a+ promise.

### Data Structure

*    112⭐      2🍴 [quetie](https://github.com/TomerAberbach/quetie)) - Just the cutest and tiniest queue/deque implementation!

### File System

*   5743⭐    255🍴 [rimraf](https://github.com/isaacs/rimraf)) - A deep deletion module for node (like rm -rf).
*      ?⭐      ?🍴 [mkdirp](https://github.com/substack/node-mkdirp)) - Recursively mkdir, like mkdir -p.
*     28⭐     11🍴 [du](https://github.com/rvagg/node-du)) - A simple JavaScript implementation of du -sb.
*    233⭐     11🍴 [file-size](https://github.com/Nijikokun/file-size)) - Lightweight filesize to human-readable / proportions w/o dependencies.
*    752⭐     93🍴 [tmp](https://github.com/raszi/node-tmp)) - Temporary file and directory creator for node.js.
*    170⭐     13🍴 [fs-promise](https://github.com/kevinbeaty/fs-promise)) - Node fs methods as Promise/A+ (optional fs-extra, graceful-fs).
*      3⭐      1🍴 [read-git-user](https://github.com/RocktimSaikia/read-git-user)) - Reads the username and email from `.gitconfig` :wrench: and returns it as json object.

### Browser

*    184⭐     26🍴 [delegate](https://github.com/zenorocha/delegate)) - Lightweight event delegation.
*      ?⭐      ?🍴 [insert-css](https://github.com/substack/insert-css)) - Insert a string of css into the head
*      6⭐      0🍴 [dom-element-value](https://github.com/crysalead-js/dom-element-value)) - DOM element value getter/setter.
*    147⭐     16🍴 [image-promise](https://github.com/bfred-it/image-promise)) - Load one or more ``s in a Promise.
*     12⭐      0🍴 [get-media-size](https://github.com/bfred-it/get-media-size)) - Get the original size of any `img`/`video`/`svg`/`canvas` tags or canvas context.
*     59⭐      3🍴 [document-ready](https://github.com/bendrucker/document-ready)) - Document ready listener for modern browsers.
*    148⭐      5🍴 [copee](https://github.com/styfle/copee)) - Copy text from browser to clipboard...natively!

### Semver

*   5229⭐    510🍴 [semver](https://github.com/npm/node-semver)) - The semantic version parser used by npm.
*      3⭐      0🍴 [semver-max](https://github.com/eush77/semver-max)) - Find maximum (or minimum) version according to semver.
*      2⭐      0🍴 [semver-first-satisfied](https://github.com/parro-it/semver-first-satisfied)) - Find minimum in an array of version that satisfies a semver range.

### CLI

*    166⭐     31🍴 [abbrev](https://github.com/isaacs/abbrev-js)) - Calculate the set of unique abbreviations for a given set of strings.
*   8590⭐    485🍴 [glob](https://github.com/isaacs/node-glob)) - Glob functionality for node.js.
*    143⭐     14🍴 [username](https://github.com/sindresorhus/username)) - Get the username of the current user.
*      ?⭐      ?🍴 [minimist](https://github.com/substack/minimist)) - Parse argument options.
*    170⭐     22🍴 [png-to-ico](https://github.com/steambap/png-to-ico)) - Convert png to windows ico format.
*      5⭐      0🍴 [help-version](https://github.com/eush77/help-version)) - Easily handle --help and --version arguments in your CLI application

### Module management

*    121⭐     14🍴 [pkg-conf](https://github.com/sindresorhus/pkg-conf)) - Get namespaced config from the closest package.json.
*     18⭐      2🍴 [normalize-pkg](https://github.com/jonschlinkert/normalize-pkg)) - Normalize values in package.json to improve compatibility, programmatic readability and usefulness with third party libs.

### Generators

*     15⭐      5🍴 [is-generator](https://github.com/blakeembrey/is-generator)) - Check whether a given value is a generator function.

### Other

*  14883⭐    916🍴 [uuid](https://github.com/kelektiv/node-uuid)) - Generate RFC-compliant UUIDs in JavaScript.
*   2239⭐    318🍴 [node-mime](https://github.com/broofa/node-mime)) - Comprehensive MIME type mapping API based on mime-db module.
*      5⭐      3🍴 [not-defined](https://github.com/fibo/not-defined)) - Checks if foo is not defined, i.e. undefined, null, an empty string, array or object.
*     21⭐      1🍴 [is-fqdn](https://github.com/parro-it/is-fqdn)) - Check if a string represent a fully qualified domain name.
*      8⭐      1🍴 [shurley](https://github.com/BrunoBernardino/shurley)) - Parses URLs from user input (with potential typos in protocols, bad copy+paste, etc.) and returns a proper URL.
*      5⭐      1🍴 [mime-type-check](https://github.com/RocktimSaikia/mime-type-check)) - Get the MIME type of a file by its extension.
*  25433⭐    818🍴 [nanoid](https://github.com/ai/nanoid)) - A tiny (130 bytes), secure, URL-friendly, unique string ID generator for JavaScript

### Tools

*     36⭐      1🍴 [npm-deprecated-check](https://github.com/KID-joker/npm-deprecated-check)) - Check for deprecated packages and recommend alternative packages.

## Related lists

This section contains awesome lists that you may find useful if you use or write small NPM modules.

*  60565⭐   6016🍴 [awesome-nodejs](https://github.com/sindresorhus/awesome-nodejs)) - A curated list of delightful Node.js packages and resources.
*   4554⭐    259🍴 [awesome-npm](https://github.com/sindresorhus/awesome-npm)) - Awesome npm resources and tips.

## Small modules rockstars to follow

These people are used to develop awesome NPM modules that follows the single responsibility philosophy.
Follow them to discover new great modules:

[![Sindre Sorhus](https://avatars.githubusercontent.com/u/170270?s=130)](https://github.com/sindresorhus) | [![James Halliday](https://avatars1.githubusercontent.com/u/12631?s=130)](https://github.com/substack) | [![Eugene Sharygin](https://avatars3.githubusercontent.com/u/4472489?s=130)](https://github.com/eush77) | [![Isaac Z. Schlueter](https://avatars3.githubusercontent.com/u/9287?s=130)](https://github.com/isaacs) | [![Jon Schlinkert](https://avatars1.githubusercontent.com/u/383994?s=130)](https://github.com/jonschlinkert) | [![Dominic Tarr](https://avatars3.githubusercontent.com/u/259374?s=130)](https://github.com/dominictarr)
---|---|---|---|---|---
[Sindre Sorhus](https://github.com/sindresorhus) | [James Halliday](https://github.com/substack) | [Eugene Sharygin](https://github.com/eush77) | [Isaac Z. Schlueter](https://github.com/isaacs) | [Jon Schlinkert](https://github.com/jonschlinkert) | [Dominic Tarr](https://github.com/dominictarr)

[![Rod Vagg](https://avatars0.githubusercontent.com/u/495647?s=130)](https://github.com/rvagg) | [![Max Ogden](https://avatars3.githubusercontent.com/u/39759?s=130)](https://github.com/maxogden) | [![Brian Woodward](https://avatars1.githubusercontent.com/u/995160?s=130)](https://github.com/doowb)
---|---|---
[Rod Vagg](https://github.com/rvagg) | [Max Ogden](https://github.com/maxogden) | [Brian Woodward](https://github.com/doowb)

## Contribute

Contributions welcome! Read the [contribution guidelines](contributing.md) first.

## License

[![CC0](http://i.creativecommons.org/p/zero/1.0/88x31.png)](http://creativecommons.org/publicdomain/zero/1.0/)

To the extent possible under law, [Andrea Parodi](https://github.com/parro-it) has waived all copyright and related or neighboring rights to this work.

## Source
  4617⭐    459🍴 [parro-it/awesome-micro-npm-packages](https://github.com/parro-it/awesome-micro-npm-packages))