{"id":51091,"url":"https://github.com/deepppppppppppppppppppppppppppppppppppp/awesome-micro-npm-packages","name":"awesome-micro-npm-packages","description":"精选的小型NPM包的精选列表","projects_count":135,"last_synced_at":"2026-08-03T19:00:20.585Z","repository":{"id":96793923,"uuid":"170057929","full_name":"deepppppppppppppppppppppppppppppppppppp/awesome-micro-npm-packages","owner":"deepppppppppppppppppppppppppppppppppppp","description":"精选的小型NPM包的精选列表","archived":false,"fork":false,"pushed_at":"2019-02-11T02:52:25.000Z","size":50,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-07-15T14:03:58.569Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/deepppppppppppppppppppppppppppppppppppp.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":"2019-02-11T02:52:02.000Z","updated_at":"2019-02-11T02:52:28.000Z","dependencies_parsed_at":"2024-01-14T13:47:38.337Z","dependency_job_id":null,"html_url":"https://github.com/deepppppppppppppppppppppppppppppppppppp/awesome-micro-npm-packages","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/deepppppppppppppppppppppppppppppppppppp/awesome-micro-npm-packages","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepppppppppppppppppppppppppppppppppppp%2Fawesome-micro-npm-packages","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepppppppppppppppppppppppppppppppppppp%2Fawesome-micro-npm-packages/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepppppppppppppppppppppppppppppppppppp%2Fawesome-micro-npm-packages/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepppppppppppppppppppppppppppppppppppp%2Fawesome-micro-npm-packages/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deepppppppppppppppppppppppppppppppppppp","download_url":"https://codeload.github.com/deepppppppppppppppppppppppppppppppppppp/awesome-micro-npm-packages/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepppppppppppppppppppppppppppppppppppp%2Fawesome-micro-npm-packages/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36248511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-03T02:00:06.975Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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"}},"created_at":"2024-01-14T11:16:10.040Z","updated_at":"2026-08-03T19:00:20.585Z","primary_language":"JavaScript","list_of_lists":false,"displayable":true,"categories":["Modules","Small modules rockstars to follow","Articles","License","Related lists"],"sub_categories":["CLI","File System","Other","Date \u0026 Time","Array","Semver","Promise","Stream","Browser","Object","String","Function","Math","Module management","Generators"],"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* [Build small single purpose modules](http://thenodeway.io/introduction/#build-small-single-purpose-modules)\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* [Why I think \"micro-packages\" are a good thing.](http://codetunnel.io/why-i-think-micro-packages-are-a-good-thing/)\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\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 engance 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\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-number](https://github.com/jonschlinkert/is-number) - Returns `true` if the value is a number.\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### 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\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\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","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/deepppppppppppppppppppppppppppppppppppp%2Fawesome-micro-npm-packages/projects"}