{"id":59,"url":"https://github.com/parro-it/awesome-micro-npm-packages","last_synced_at":"2025-05-14T21:06:17.877Z","repository":{"id":37686648,"uuid":"51155797","full_name":"parro-it/awesome-micro-npm-packages","owner":"parro-it","description":"A curated list of small, focused npm packages.","archived":false,"fork":false,"pushed_at":"2023-12-18T13:25:02.000Z","size":122,"stargazers_count":4618,"open_issues_count":3,"forks_count":459,"subscribers_count":195,"default_branch":"master","last_synced_at":"2025-05-08T03:01:52.798Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/parro-it.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"LICENSE","code_of_conduct":"code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-02-05T15:44:00.000Z","updated_at":"2025-05-02T01:50:35.000Z","dependencies_parsed_at":"2022-08-08T21:15:53.191Z","dependency_job_id":"69b56f8f-931a-4566-a374-d5f081ca28b0","html_url":"https://github.com/parro-it/awesome-micro-npm-packages","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parro-it%2Fawesome-micro-npm-packages","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parro-it%2Fawesome-micro-npm-packages/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parro-it%2Fawesome-micro-npm-packages/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parro-it%2Fawesome-micro-npm-packages/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parro-it","download_url":"https://codeload.github.com/parro-it/awesome-micro-npm-packages/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254227611,"owners_count":22035669,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-01-05T20:12:45.238Z","updated_at":"2025-05-14T21:06:17.819Z","avatar_url":"https://github.com/parro-it.png","language":null,"funding_links":[],"categories":["Programming Languages","Technical","Other Lists","Awesome Ecosystem Lists","编程语言","Others","miscellaneous","Uncategorized","NodeJS \u0026 NPM","More","front-end-development","Live Site:   [searchAwesome](https://search-awesome.vercel.app/)","UI Components / UI Tools","Node","Source","Themed Directories"],"sub_categories":["awesome-*","TeX Lists","Uncategorized","CSS","Tools","Updated more than a year ago"],"readme":"# Awesome Micro npm Packages [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\n\u003e A curated list of small, focused Node.js modules.\n\n*Inspired by the [awesome](https://github.com/sindresorhus/awesome) list thing.*\n\n\n## Articles\n\n* [One-line node modules](https://github.com/sindresorhus/ama/issues/10)\n* [Module best practices](https://github.com/mattdesl/module-best-practices)\n* [Evaluating Packages Part 1 - Turn to community](http://bytearcher.com/articles/evaluating-packages-1-check-community/) \n* [Evaluating Packages Part 2 - Review repository](http://bytearcher.com/articles/evaluating-packages-2-review-repository/)\n* [Small modules: it’s not quite that simple](https://medium.com/@Rich_Harris/small-modules-it-s-not-quite-that-simple-3ca532d65de4)\n* [In Defense of Hyper Modular JavaScript](https://medium.freecodecamp.com/in-defense-of-hyper-modular-javascript-33934c79e113)\n* [Tiny npm package: Guidelines to create a Node.js module following the small package philosophy](http://g14n.info/2015/12/tiny-npm-package/)\n* [The cost of small modules](https://nolanlawson.com/2016/08/15/the-cost-of-small-modules/)\n\n## Modules\n\n### Array\n\n* [is-sorted](https://github.com/dcousens/is-sorted) - A small module to check if an Array is sorted.\n* [array-first](https://github.com/jonschlinkert/array-first) - Get the first element or first n elements of an array.\n* [array-last](https://github.com/jonschlinkert/array-last) - Return the last element in an array.\n* [arr-flatten](https://github.com/jonschlinkert/arr-flatten) - Recursively flatten an array or arrays.\n* [dedupe](https://github.com/seriousManual/dedupe) - Remove duplicates from an array.\n* [array-range](https://github.com/mattdesl/array-range) - Creates a new array with given range.\n* [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.\n* [filled-array](https://github.com/sindresorhus/filled-array) - Returns an array filled with the specified input\n* [map-array](https://github.com/parro-it/map-array) - Map object keys and values into an array.\n* [in-array](https://github.com/jonschlinkert/in-array) - Return true if any of passed values exists in array - faster than using indexOf.\n* [unordered-array-remove](https://github.com/mafintosh/unordered-array-remove) - Efficiently remove an element from an unordered array without doing a splice.\n* [array-swap](https://github.com/michaelzoidl/swap-array) - Swap position of two items in an array.\n* [mirrarray](https://github.com/johnwquarles/mirrarray) - Creates a keymirror object from an array of valid keys.\n* [group-array](https://github.com/doowb/group-array) - Group array of objects into lists.\n* [array.chunk](https://github.com/zhiyelee/array.chunk) - Split array/TypedArray to chunks of given size.\n* [fast-cartesian](https://github.com/ehmicky/fast-cartesian) - Fast cartesian product.\n\n### String\n\n* [decamelize](https://github.com/sindresorhus/decamelize) - Convert a camelized string into a lowercased one with a custom separator: unicornRainbow → unicorn_rainbow.\n* [pad-left](https://github.com/jonschlinkert/pad-left) - Left pad a string with zeros or a specified string.\n* [to-camel-case](https://github.com/ianstormtaylor/to-camel-case) - Convert a string to a camel case.\n* [to-capital-case](https://github.com/ianstormtaylor/to-capital-case) - Convert a string to a capital case.\n* [to-constant-case](https://github.com/ianstormtaylor/to-constant-case) - Convert a string to a constant case.\n* [to-dot-case](https://github.com/ianstormtaylor/to-dot-case) - Convert a string to a dot case.\n* [to-no-case](https://github.com/ianstormtaylor/to-no-case) - Remove an existing case from a string.\n* [to-pascal-case](https://github.com/ianstormtaylor/to-pascal-case) - Convert a string to a pascal case.\n* [to-sentence-case](https://github.com/ianstormtaylor/to-sentence-case) - Convert a string to a sentence case.\n* [to-snake-case](https://github.com/ianstormtaylor/to-snake-case) - Convert a string to a snake case.\n* [to-space-case](https://github.com/ianstormtaylor/to-space-case) - Convert a string to a space case.\n* [to-title-case](https://github.com/ianstormtaylor/to-title-case) - Convert a string to a title case.\n* [node-slug](https://github.com/dodo/node-slug) - slugifies even utf-8 chars.\n* [rtrim](https://github.com/sergejmueller/rtrim) - Strip whitespace - or other characters - from the end of a string.\n* [slice.js](https://github.com/hustcc/slice.js) - Javascript library to enhance String.substring / Array.slice with python slice style.\n* [strip-ansi](https://github.com/chalk/strip-ansi) - Strip ANSI escape codes.\n* [striptags](https://github.com/ericnorris/striptags) - An implementation of PHP's strip_tags in Node.js.\n* [parse-next-json-value](https://github.com/ErikOnBike/parse-next-json-value) - Parse next JSON value from string allowing extraneous characters after value.\n* [pluralize](https://github.com/DaniAkash/pluralizer) - A very tiny library to pluralize words\n\n\n### Date \u0026 Time\n\n* [pretty-ms](https://github.com/sindresorhus/pretty-ms) - Convert milliseconds to a human readable string: 1337000000 → 15d 11h 23m 20s.\n* [hirestime](https://github.com/seriousManual/hirestime) - A wrapper around the built-in high resolution timer which simplifies the calculation of timestamps.\n* [periods](https://github.com/timruffles/periods) - Defined time-periods constants for Javascript, in milliseconds.\n* [fecha](https://github.com/taylorhakes/fecha) - Javascript Date formatting and parsing.\n* [akamai-time-reference](https://github.com/jucrouzet/akamai-time-reference) - Get reference time using Akamai's time reference service.\n* [timeago.js](https://github.com/hustcc/timeago.js) - A tiny(~1.7kb) library used to format date with `*** time ago` statement.\n* [count-days-in-month](https://github.com/shinnn/count-days-in-month) - Get the number of days in a given month.\n* [time-stamp](https://github.com/jonschlinkert/time-stamp) - Get a formatted timestamp.\n* [twas](https://github.com/vutran/twas) - Generate a relative time string (Example: \"3 seconds ago\")\n\n### Object\n\n* [map-obj](https://github.com/sindresorhus/map-obj) - Map object keys and values into a new object.\n* [filter-obj](https://github.com/sindresorhus/filter-obj) - Filter object keys and values into a new object.\n* [object-values](https://github.com/sindresorhus/object-values) - Get the values of an object.\n* [object-pairs](https://github.com/eush77/object-pairs) - Turn an object into list of [key, value] pairs for mapping, iterating or other purposes.\n* [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.\n* [just-pluck](https://github.com/jarofghosts/just-pluck) - Pluck without the madness.\n* [deep-equal](https://github.com/substack/node-deep-equal) - Node's assert.deepEqual() algorithm as a standalone module.\n* [deep-assign](https://github.com/sindresorhus/deep-assign) - Recursive Object.assign().\n* [set-value](https://github.com/jonschlinkert/set-value) - Create nested values and any intermediaries dot notation (`'a.b.c'`) paths.\n* [get-value](https://github.com/jonschlinkert/get-value) - Use property paths (a.b.c) to get a nested value from an object.\n* [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.\n* [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.\n* [flatkeys](https://github.com/ricardobeat/flatkeys) - Flatten object key hierarchies into a list of strings using a custom separator.\n* [flatten-obj](https://github.com/watson/flatten-obj) - Converts an object literal with deeply nested nodes to a simple key/value object.\n* [is-empty-object](https://github.com/gummesson/is-empty-object) - Check if an object is empty.\n* [stringify-object](https://github.com/yeoman/stringify-object) - Stringify an object/array like JSON.stringify just without all the double-quotes.\n* [sorted-object](https://github.com/domenic/sorted-object) - Returns a copy of an object with its keys sorted.\n* [static-props](https://github.com/fibo/static-props) - Defines static object attributes using `Object.defineProperties`\n* [missing-deep-keys](https://github.com/vladgolubev/missing-deep-keys) - Returns an array of keys from first object that are missing in second.\n* [has-own-property](https://github.com/LinusU/has-own-property) - Check if an object has a local property. \n* [merge-objects](https://github.com/shevaroller/node-merge-objects) - Deep-merge two objects. Arrays that are values of the same object key get concatenated.\n* [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.\n\n### Function\n\n* [compose-function](https://github.com/stoeffel/compose-function) - Compose a new function from smaller functions `f(g(x))`.\n* [curry](https://github.com/dominictarr/curry) - A curry function without anything too clever.\n* [once](https://github.com/isaacs/once) - Run a function exactly one time.\n* [deep-bind](https://github.com/jonschlinkert/deep-bind) - Bind a context to all functions in an object, including deeply nested functions.\n* [identity-function](https://github.com/substack/identity-function) - Always return the input argument. \n* [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.\n* [throttle-debounce](https://github.com/niksy/throttle-debounce) - Throttle/debounce your functions.\n* [compose-tiny](https://github.com/hipstersmoothie/compose-tiny) - A very tiny and fast compose function.\n\n### Math\n\n* [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.\n* [is-number](https://github.com/jonschlinkert/is-number) - Returns `true` if the value is a number.\n* [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.\n* [easy-math.js](https://github.com/kingzez/easy-math.js) - A tiny easy math library including addition, multiplication, subtraction, and division.\n* [my-prime](https://github.com/jinnatul/my-prime) - A good way to tell if a number is prime or not.\n* [fun-gcd](https://github.com/zubayerhimel/fun-gcd) - A tiny math library to get gcd of two numbers using Euclidean algorithm\n\n### Stream\n* [through2](https://github.com/rvagg/through2) - Tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise.\n* [through2-filter](https://github.com/brycebaril/through2-filter) - A through2 to create an Array.prototype.filter analog for streams.\n* [through2-map](https://github.com/brycebaril/through2-map) - A through2 to create an Array.prototype.map analog for streams.\n* [stream-spigot](https://github.com/brycebaril/node-stream-spigot) - A readable stream generator, useful for testing or converting simple functions into Readable streams.\n* [concat-stream](https://github.com/maxogden/concat-stream) - writable stream that concatenates strings or data and calls a callback with the result.\n* [JSONStream](https://github.com/dominictarr/JSONStream) - streaming JSON.parse and stringify\n* [through2-map-promise](https://github.com/RangerMauve/through2-map-promise) - A small promise-based wrapper for through2.\n* [pump](https://github.com/mafintosh/pump) - pipe streams together and close all of them if one of them closes.\n* [split](https://github.com/dominictarr/split) - Break up a stream and reassemble it so that each line is a chunk.\n* [is-stream](https://github.com/sindresorhus/is-stream) - Check if something is a Node.js stream.\n* [syncthrough](https://github.com/mcollina/syncthrough) - Transform your data as it pass by, synchronously.\n\n\n### Promise\n\n* [pify](https://github.com/sindresorhus/pify) - Promisify a callback-style function.\n* [promise-all-props](https://github.com/Siilwyn/promise-all-props) - Like `Promise.all` but for object properties.\n* [sleep-promise](https://github.com/brummelte/sleep-promise) - Resolves a promise after a specified delay.\n* [is-promise](https://github.com/then/is-promise) - Test whether an object looks like a promises-a+ promise.\n\n### Data Structure\n\n* [quetie](https://github.com/TomerAberbach/quetie) - Just the cutest and tiniest queue/deque implementation!\n\n### File System\n\n* [rimraf](https://github.com/isaacs/rimraf) - A deep deletion module for node (like rm -rf).\n* [mkdirp](https://github.com/substack/node-mkdirp) - Recursively mkdir, like mkdir -p.\n* [du](https://github.com/rvagg/node-du) - A simple JavaScript implementation of du -sb.\n* [file-size](https://github.com/Nijikokun/file-size) - Lightweight filesize to human-readable / proportions w/o dependencies.\n* [tmp](https://github.com/raszi/node-tmp) - Temporary file and directory creator for node.js.\n* [fs-promise](https://github.com/kevinbeaty/fs-promise) - Node fs methods as Promise/A+ (optional fs-extra, graceful-fs).\n* [read-git-user](https://github.com/RocktimSaikia/read-git-user) - Reads the username and email from `.gitconfig` :wrench: and returns it as json object.\n\n### Browser\n\n* [delegate](https://github.com/zenorocha/delegate) - Lightweight event delegation.\n* [insert-css](https://github.com/substack/insert-css) - Insert a string of css into the head\n* [dom-element-value](https://github.com/crysalead-js/dom-element-value) - DOM element value getter/setter.\n* [image-promise](https://github.com/bfred-it/image-promise) - Load one or more `\u003cimg\u003e`s in a Promise.\n* [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.\n* [document-ready](https://github.com/bendrucker/document-ready) - Document ready listener for modern browsers.\n* [copee](https://github.com/styfle/copee) - Copy text from browser to clipboard...natively!\n\n### Semver\n\n* [semver](https://github.com/npm/node-semver) - The semantic version parser used by npm.\n* [semver-max](https://github.com/eush77/semver-max) - Find maximum (or minimum) version according to semver.\n* [semver-first-satisfied](https://github.com/parro-it/semver-first-satisfied) - Find minimum in an array of version that satisfies a semver range.\n\n\n\n### CLI\n\n* [abbrev](https://github.com/isaacs/abbrev-js) - Calculate the set of unique abbreviations for a given set of strings.\n* [glob](https://github.com/isaacs/node-glob) - Glob functionality for node.js.\n* [username](https://github.com/sindresorhus/username) - Get the username of the current user.\n* [minimist](https://github.com/substack/minimist) - Parse argument options.\n* [png-to-ico](https://github.com/steambap/png-to-ico) - Convert png to windows ico format.\n* [help-version](https://github.com/eush77/help-version) - Easily handle --help and --version arguments in your CLI application\n\n### Module management\n\n* [pkg-conf](https://github.com/sindresorhus/pkg-conf) - Get namespaced config from the closest package.json.\n* [normalize-pkg](https://github.com/jonschlinkert/normalize-pkg) - Normalize values in package.json to improve compatibility, programmatic readability and usefulness with third party libs.\n\n### Generators\n\n* [is-generator](https://github.com/blakeembrey/is-generator) - Check whether a given value is a generator function.\n\n### Other\n\n* [uuid](https://github.com/kelektiv/node-uuid) - Generate RFC-compliant UUIDs in JavaScript.\n* [node-mime](https://github.com/broofa/node-mime) - Comprehensive MIME type mapping API based on mime-db module.\n* [not-defined](https://github.com/fibo/not-defined) - Checks if foo is not defined, i.e. undefined, null, an empty string, array or object.\n* [is-fqdn](https://github.com/parro-it/is-fqdn) - Check if a string represent a fully qualified domain name.\n* [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.\n* [mime-type-check](https://github.com/RocktimSaikia/mime-type-check) - Get the MIME type of a file by its extension.\n* [nanoid](https://github.com/ai/nanoid) - A tiny (130 bytes), secure, URL-friendly, unique string ID generator for JavaScript\n\n### Tools\n\n* [npm-deprecated-check](https://github.com/KID-joker/npm-deprecated-check) - Check for deprecated packages and recommend alternative packages.\n\n## Related lists\n\nThis section contains awesome lists that you may find useful if you use or write small NPM modules.\n\n* [awesome-nodejs](https://github.com/sindresorhus/awesome-nodejs) - A curated list of delightful Node.js packages and resources.\n* [awesome-npm](https://github.com/sindresorhus/awesome-npm) - Awesome npm resources and tips.\n\n## Small modules rockstars to follow\n\nThese people are used to develop awesome NPM modules that follows the single responsibility philosophy.\nFollow them to discover new great modules:\n\n[![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)\n---|---|---|---|---|---\n[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)\n\n[![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)\n---|---|---\n[Rod Vagg](https://github.com/rvagg) | [Max Ogden](https://github.com/maxogden) | [Brian Woodward](https://github.com/doowb)\n\n\n## Contribute\n\nContributions welcome! Read the [contribution guidelines](contributing.md) first.\n\n\n## License\n\n[![CC0](http://i.creativecommons.org/p/zero/1.0/88x31.png)](http://creativecommons.org/publicdomain/zero/1.0/)\n\nTo the extent possible under law, [Andrea Parodi](https://github.com/parro-it) has waived all copyright and related or neighboring rights to this work.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparro-it%2Fawesome-micro-npm-packages","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparro-it%2Fawesome-micro-npm-packages","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparro-it%2Fawesome-micro-npm-packages/lists"}