{"id":13400093,"url":"https://github.com/sindresorhus/awesome-npm","last_synced_at":"2025-10-01T00:32:10.673Z","repository":{"id":38290529,"uuid":"49596056","full_name":"sindresorhus/awesome-npm","owner":"sindresorhus","description":"Awesome npm resources and tips","archived":false,"fork":false,"pushed_at":"2024-10-22T13:39:14.000Z","size":128,"stargazers_count":4482,"open_issues_count":1,"forks_count":257,"subscribers_count":120,"default_branch":"main","last_synced_at":"2024-10-29T18:08:34.331Z","etag":null,"topics":["awesome","awesome-list","list","node","nodejs","npm","package-manager","yarn"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sindresorhus.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"contributing.md","funding":".github/funding.yml","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,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"sindresorhus","open_collective":"sindresorhus","buy_me_a_coffee":"sindresorhus","custom":"https://sindresorhus.com/donate"}},"created_at":"2016-01-13T19:20:20.000Z","updated_at":"2024-10-28T12:44:17.000Z","dependencies_parsed_at":"2024-11-06T01:54:27.009Z","dependency_job_id":"a12e44cd-2b5d-4676-92c2-38b76eb7f31e","html_url":"https://github.com/sindresorhus/awesome-npm","commit_stats":{"total_commits":98,"total_committers":55,"mean_commits":"1.7818181818181817","dds":0.6734693877551021,"last_synced_commit":"8ab222e1afe1804dc60b010cb46a00c141e0eb56"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sindresorhus%2Fawesome-npm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sindresorhus%2Fawesome-npm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sindresorhus%2Fawesome-npm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sindresorhus%2Fawesome-npm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sindresorhus","download_url":"https://codeload.github.com/sindresorhus/awesome-npm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234744477,"owners_count":18879955,"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":["awesome","awesome-list","list","node","nodejs","npm","package-manager","yarn"],"created_at":"2024-07-30T19:00:48.115Z","updated_at":"2025-10-01T00:32:10.666Z","avatar_url":"https://github.com/sindresorhus.png","language":null,"funding_links":["https://github.com/sponsors/sindresorhus","https://opencollective.com/sindresorhus","https://buymeacoffee.com/sindresorhus","https://sindresorhus.com/donate"],"categories":["Related lists","Programming Languages","Others","Skills and Knowledge","Live Site:   [searchAwesome](https://search-awesome.vercel.app/)","Awesome Node.js Lists","HarmonyOS","References","Backend","Technical","JavaScript Libraries, Tools, and Reference","Uncategorized","Awesomes","miscellaneous","More","Programming","NodeJS \u0026 NPM","Other Lists","相关列表","Miscellaneous","Node","awesome-list","编程语言","Source","front-end-development","相关链接","JavaScript","Themed Directories","前端","📚 Learning \u0026 Resources","相关的列表"],"sub_categories":["Miscellaneous","Node.js","Windows Manager","awesome-*","Awesome","Uncategorized","工具","CSS","JavaScript","TeX Lists","Other","其他","Standalone version of a package","Updated in the last 6 months","nodejs","Tools","杂项"],"readme":"# Awesome npm [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) [\u003cimg src=\"https://github.com/npm/logos/blob/7fb0bc425e0dac1bab065217c4ed595594448db4/npm-transparent.png\" width=\"200\" align=\"right\" alt=\"npm\"\u003e](https://www.npmjs.com)\n\n\u003e Awesome [npm](https://www.npmjs.com) resources and tips\n\n[npm](https://en.wikipedia.org/wiki/Npm_(software)) is a package manager for the JavaScript programming language and comes bundled in the [Node.js](https://en.wikipedia.org/wiki/Node.js) runtime.\n\n*Please read the [contribution guidelines](contributing.md) before contributing.*\n\n## Contents\n\n- [Articles](#articles)\n- [Tools](#tools)\n- [Packages](#packages)\n- [Clients](#clients)\n- [Tips](#tips)\n- [FAQ](#faq)\n- [Community](#community)\n- [Documentation](#documentation)\n- [Support](#support)\n- [Related](#related)\n\n## Articles\n\n- [Small focused modules](https://github.com/sindresorhus/ama/issues/10#issuecomment-117766328)\n- [Unix philosophy and Node.js](http://blog.izs.me/post/48281998870/unix-philosophy-and-nodejs) - Write programs that do one thing and do it well.\n- [Writing small modules](https://web.archive.org/web/20180302125059/https://substack.net/how_I_write_modules)\n- [Semver: A Primer](https://nodesource.com/blog/semver-a-primer/) *(Must read!)*\n- [Semver: Tilde and Caret](https://nodesource.com/blog/semver-tilde-and-caret/)\n- [Offline installation of npm packages](https://addyosmani.com/blog/using-npm-offline/)\n- [Task automation with npm run](https://web.archive.org/web/20180302164842/http://substack.net/task_automation_with_npm_run)\n- [How to use npm as a build tool](https://www.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/)\n- [Install npm packages globally without sudo on macOS and Linux](https://github.com/sindresorhus/guides/blob/main/npm-global-without-sudo.md)\n- [Optimizing the footprint of an npm package](https://medium.com/@goldglovecb/npm-needs-a-personal-trainer-537e0f8859c6)\n- [The Art of Node](https://github.com/maxogden/art-of-node#modules) - An introduction to Node.js and client-side development with npm.\n- [Why npm scripts?](https://css-tricks.com/why-npm-scripts/) - An introduction to npm scripts with common packages and scripts, as well as a boilerplate project.\n\n## Tools\n\n### Web\n\n- [npms](https://npms.io) - Superb package search with deep analysis of package quality using a [myriad of metrics](https://npms.io/about).\n- [NodeICO](https://nodei.co/) - Package badges.\n- [Libraries.io](https://libraries.io/npm) - Package discovery.\n- [npm-stat](http://npm-stat.com) - Statistics charts for packages.\n- [npmgraph](http://npm.anvaka.com) - Visualization of dependencies.\n- [npm trends](http://www.npmtrends.com) - Compare package download counts over time.\n- [npm-top](https://gist.github.com/bcoe/dcc961b869bbf6685002) - npm users by downloads.\n- [npm semver calculator](http://semver.npmjs.com) - Visually explore what versions of a package a semver range matches.\n- [ghub.io](https://ghub.io) - Redirects to the GitHub repo of an npm package.\n- [moiva](https://moiva.io) - Discover and compare packages.\n\n### Browser extensions\n\n- [Octo-Linker](https://chrome.google.com/webstore/detail/octo-linker/jlmafbaeoofdegohdhinkhilhclaklkp) - Chrome extension to navigate across npm packages on GitHub with ease.\n- [npm-hub](https://chrome.google.com/webstore/detail/npm-hub/kbbbjimdjbjclaebffknlabpogocablj) - Chrome extension to explore npm dependencies on GitHub repos.\n- [github-npm-stats](https://chrome.google.com/webstore/detail/github-npm-stats/oomfflokggoffaiagenekchfnpighcef) - View npm download stats on GitHub.\n- [npm-search-update](https://chrome.google.com/webstore/detail/npm-search-update/kagpoplamlmaonpddimnnigiojimihnh) - Chrome extension to quickly search for dependencies and monitor changes from the npm registry.\n\n### CLI\n\n- [zsh-better-npm-completion](https://github.com/lukechilds/zsh-better-npm-completion) - Better ZSH completion for npm.\n- [npkill](https://github.com/voidcosmos/npkill) - Easily find and remove old and heavy node_modules folders.\n\n## Packages\n\n### Publishing\n\n- [np](https://github.com/sindresorhus/np) - A better `npm publish`.\n- [publish-please](https://github.com/inikulin/publish-please) - Publish packages safely and gracefully.\n- [npm-release](https://github.com/phuu/npm-release) - Making releasing to npm so easy a kitten could probably do it™.\n- [pkgfiles](https://github.com/timoxley/pkgfiles) - List all files which would be published in a package.\n- [release-it](https://github.com/webpro/release-it) - Automate releases for Git repositories and/or npm packages. Changelog generation, GitHub/GitLab releases, etc.\n- [semantic-release](https://github.com/semantic-release/semantic-release) - Fully automated package publishing.\n\n### Registry\n\n- [npm-name](https://github.com/sindresorhus/npm-name-cli) - Check whether a package name is available on npm.\n- [package-json](https://github.com/sindresorhus/package-json) - Get the package.json of a package from the npm registry.\n- [latest-version](https://github.com/sindresorhus/latest-version-cli) - Get the latest version of an npm package.\n- [npm-keyword](https://github.com/sindresorhus/npm-keyword) - Get a list of npm packages with a certain keyword.\n- [npm-user](https://github.com/sindresorhus/npm-user) - Get user info of an npm user.\n- [npm-email](https://github.com/sindresorhus/npm-email) - Get the email of an npm user.\n- [npm-user-packages](https://github.com/kevva/npm-user-packages-cli) - Get packages by an npm user.\n- [dpn](https://github.com/gillstrom/dpn) - Get the dependents of a user's npm packages.\n- [npm-stats](https://github.com/hughsk/npm-stats) - Get data from an npm registry.\n- [npm-cli-login](https://github.com/postmanlabs/npm-cli-login) - Log in to npm.\n- [nrm](https://github.com/Pana/nrm) - Registry manager.\n- [npm-register](https://github.com/dickeyxxx/npm-register) - Easy to set up and maintain npm registry and proxy.\n- [verdaccio](https://github.com/verdaccio/verdaccio) - Lightweight private npm proxy registry.\n- [cloudsmith](https://cloudsmith.io/l/npm-registry/) - A fully managed package management SaaS with support for public and private npm registries (and many others).\n\n### Other\n\n- [npm-home](https://github.com/sindresorhus/npm-home) - Open the npm page of a package.\n- [gh-home](https://github.com/sindresorhus/gh-home) - Open the GitHub page of a package.\n- [david](https://github.com/alanshaw/david) - Check if your package dependencies are out of date.\n- [npm-check](https://github.com/dylang/npm-check) - Check for outdated, incorrect, and unused dependencies, as well as interactive update.\n- [npm-upgrade](https://github.com/th0r/npm-upgrade) - Update outdated npm dependencies interactively.\n- [npm-shrinkwrap](https://github.com/uber/npm-shrinkwrap) - A consistent shrinkwrap tool.\n- [npm-windows-upgrade](https://github.com/felixrieseberg/npm-windows-upgrade) - Upgrade npm on Windows.\n- [generator-nm](https://github.com/sindresorhus/generator-nm) - Scaffold out an npm package.\n- [package-up](https://github.com/sindresorhus/package-up) - Find the closest package.json file.\n- [read-package-up](https://github.com/sindresorhus/read-package-up) - Read the closest package.json file.\n- [normalize-package-data](https://github.com/npm/normalize-package-data) - Normalize package metadata.\n- [package-config](https://github.com/sindresorhus/package-config) - Get namespaced config from the closest package.json.\n- [npm-run-path](https://github.com/sindresorhus/npm-run-path) - Run locally installed binaries in the terminal by name like with global ones.\n- [local-npm](https://github.com/nolanlawson/local-npm) - Use npm [offline](https://addyosmani.com/blog/using-npm-offline/).\n- [npe](https://github.com/zeke/npe) - CLI for inspecting and editing properties in package.json.\n- [engine-deps](https://github.com/samccone/engine-deps) - Manage Node.js version specific dependencies with ease.\n- [enpeem-search](https://github.com/amovah/enpeem-search) - Search packages by scraping the npm web search.\n- [npm-issues](https://github.com/seanzarrin/npm-issues) - Search known issues of all your packages at once.\n- [john](https://github.com/davej/john) - Make npm3's flat dependencies easier to find and sort.\n- [ntl](https://github.com/ruyadorno/ntl) - Interactive CLI menu to list \u0026 run npm tasks.\n- [decheck](https://github.com/egoist/decheck) - Explore dependencies of npm packages in the command-line.\n- [shrinkpack](https://github.com/JamieMason/shrinkpack) - Lock down your dependencies and install offline.\n- [redrun](https://github.com/coderaiser/redrun) - Expand scripts from package.json to improve execution speed.\n- [package-size](https://github.com/egoist/package-size) - Get the bundle size of an npm package.\n- [synp](https://github.com/imsnif/synp) - Convert yarn.lock to package-lock.json and vice versa.\n- [npm-run-all](https://github.com/mysticatea/npm-run-all) - CLI tool to run multiple npm-scripts in parallel or serial.\n- [onchange](https://github.com/Qard/onchange) - Watch files and folders and run a command when something changed.\n- [cli-error-notifier](https://github.com/micromata/cli-error-notifier) - Sends native desktop notifications when npm scripts fail.\n- [luna](https://github.com/rvpanoz/luna) - App to manage npm dependencies.\n- [emma-cli](https://github.com/maticzav/emma-cli) - Interactive CLI package search utility.\n- [lockfile-lint](https://github.com/lirantal/lockfile-lint) - Lint lockfiles for improved security and trust policies to mitigate malicious package injection and insecure lockfile resources.\n\n## Clients\n\n- [yarn](https://github.com/yarnpkg/yarn) - Fast, reliable, and secure dependency management.\n- [npm](https://github.com/npm/cli) - The official client.\n- [pnpm](https://github.com/pnpm/pnpm) - Fast, disk space efficient package manager.\n\n## Tips\n\n### Update to the latest npm version\n\n```\n$ npm install --global npm\n```\n\n*[Windows users, read more.](https://github.com/felixrieseberg/npm-windows-upgrade)*\n\n### Command aliases\n\n- `npm i ` → `npm install`\n- `npm i -D` → `npm install --save-dev`\n- `npm t` → `npm test`\n- `npm it` → `npm install \u0026\u0026 npm test`\n- `npm r` → `npm uninstall`\n- `npm un` → `npm uninstall`\n- `npm up` → `npm update`\n\n### Shell aliases\n\nSpeed up your common npm tasks.\n\nIn your `.zshrc`/`.bashrc`:\n\n```sh\nalias ni='npm install'\nalias nid='npm install --save-dev'\nalias nig='npm install --global'\nalias nt='npm test'\nalias nit='npm install \u0026\u0026 npm test'\nalias nk='npm link'\nalias nr='npm run'\nalias ns='npm start'\nalias nf='npm cache clean \u0026\u0026 rm -rf node_modules \u0026\u0026 npm install'\nalias nlg='npm list --global --depth=0'\n```\n\n### Don't add to package.json when installing\n\nBy default npm adds packages you install to the `dependencies` field in package.json (since v5). You can prevent this by specifying the `--no-save` flag. You can add a package to `devDependencies` with `--save-dev`/`-D`:\n\n```\n$ npm install --save-dev ava\n```\n\n### Run scripts\n\nYou can easily [run scripts](https://docs.npmjs.com/cli/run-script) using npm by adding them to the `\"scripts\"` field in package.json and run them with `npm run \u003cscript-name\u003e`. Run `npm run` to see available scripts. Binaries of locally install packages are made available in the [PATH](https://en.wikipedia.org/wiki/PATH_(variable)), so you can run them by name.\n\n```json\n{\n\t\"name\": \"awesome-package\",\n\t\"scripts\": {\n\t\t\"cat\": \"cat-names\"\n\t},\n\t\"dependencies\": {\n\t\t\"cat-names\": \"^1.0.0\"\n\t}\n}\n```\n\n```\n$ npm run cat\nMax\n```\n\nAll package.json properties are [exposed](https://docs.npmjs.com/misc/scripts#packagejson-vars) as environment variables:\n\n```json\n{\n\t\"name\": \"awesome-package\",\n\t\"scripts\": {\n\t\t\"name\": \"echo $npm_package_name\"\n\t}\n}\n```\n\n```\n$ npm run name\nawesome-package\n```\n\n#### Passing options to commands\n\nYou can pass options to the command you are using in your npm script by adding `-- --flag` like in the example below. The `--` [marks the end of options parsing](https://unix.stackexchange.com/questions/11376/what-does-double-dash-mean-also-known-as-bare-double-dash), so `npm run` will just ignore it and pass it to the command.\n\n```json\n{\n\t\"name\": \"awesome-package\",\n\t\"scripts\": {\n\t\t\"xo\": \"xo\",\n\t\t\"xo:fix\": \"npm run xo -- --fix\",\n\t}\n}\n```\n\n*Adding the `-- --fix ` option is like executing `xo --fix`*.\n\n#### Silent option\n\n`npm run` has a `--silent` option which is especially useful when combining npm scripts.\n\nImagine you have a setup for linting your JavaScript files like the following:\n\n```json\n{\n\t\"name\": \"awesome-package\",\n\t\"scripts\": {\n\t\t\"xo\": \"xo\",\n\t\t\"xo:fix\": \"npm run xo --silent -- --fix\",\n\t}\n}\n```\n\n*Using the `--silent` option reduces the output in the terminal. See [this comparison](https://twitter.com/mkuehnel/status/957965749473210369).*\n\n### Lifecycle scripts\n\nnpm comes with predefined [lifecyle scripts](https://docs.npmjs.com/misc/scripts) which are excuted under specific conditions if they are defined in your package.json.\n\n```json\n{\n\t\"name\": \"awesome-package\",\n\t\"scripts\": {\n\t\t\"prepublishOnly\": \"nsp check\"\n\t},\n\t\"devDependencies\": {\n\t\t\"nsp\": \"^3.0.0\"\n\t}\n}\n```\n\nThis will be executed automatically before your npm package is published to the registry via `npm publish` to check for known vulnerabilties in your dependencies.\n\n*Note: **prepublishOnly** is available since npm v4.0.0. See [npm docs](https://docs.npmjs.com/misc/scripts#deprecation-note).*\n\n#### `npm start` and `npm test`\n\n`npm start` and `npm test` are also lifecycle scripts but are not executed automatically.\n\n```json\n{\n\t\"name\": \"awesome-package\",\n\t\"scripts\": {\n\t\t\"start\": \"node server.js\",\n\t\t\"test\": \"ava\"\n\t},\n\t\"devDependencies\": {\n\t\t\"ava\": \"^1.0.0\"\n\t}\n}\n```\n\nTherefore they can be executed simply with:\n\n```console\n$ npm test\n$ npm start\n```\n\n#### `pre` and `post` scripts\n\nThese are special lifecycle scripts which can be used to run scripts automatically in sequence.\n\n```json\n{\n\t\"name\": \"awesome-package\",\n\t\"scripts\": {\n\t\t\"pretest\": \"eslint .\",\n\t\t\"test\": \"ava\"\n\t},\n\t\"devDependencies\": {\n\t\t\"eslint\": \"^4.19.0\",\n\t\t\"ava\": \"^1.0.0\"\n\t}\n}\n```\n\n```console\n$ npm test\n```\n\nThis will lint your files before running your tests. The tests will not run if linting fails. Or more generally spoken: the following script won’t be executed if one of the scripts running in sequence exits with an exit code other than 0.\n\n*Note: `pre` and `post` scripts can also be used for your custom npm scripts. So `npm run foo` will also run `prefoo` and `postfoo` if defined.*\n\n### Run script with `npx`\n\n`npm` [comes bundled](https://medium.com/@maybekatz/introducing-npx-an-npm-package-runner-55f7d4bd282b) with `npx` (Since v5.2.0) — a tool to execute package binaries. Each command is executed either from the local `node_modules/.bin` directory, or from a central cache, installing any packages needed in order for `\u003ccommand\u003e` to run.\n\n```json\n{\n\t\"name\": \"awesome-package\",\n\t\"dependencies\": {\n\t\t\"cat-names\": \"^1.0.0\"\n\t}\n}\n```\n\nIf the binary is already installed, it will be executed from `node_modules/.bin`.\n\n```\n$ npx cat-names\nMax\n```\n\nBut if the binary is missing, it will be installed first.\n\n```\n$ npx dog-names\nnpx: installed 46 in 3.136s\nBentley\n```\n\n### Run commands with different Node.js versions\n\nWith `npx` (Comes bundled with npm v5.2.0 or newer) and the [`node-bin`](https://www.npmjs.com/package/node-bin) package, you can easily try out code in different Node.js versions without having to use a version manager like [`nvm`](http://nvm.sh), [`nave`](https://github.com/isaacs/nave), or [`n`](https://github.com/tj/n).\n\n```\n$ npx --package=node-bin@6.11.0 -- node --version\nv6.11.0\n```\n\n### Link local packages\n\nSometimes it can be useful to have a local version of a package as a dependency. You can use `npm link` to link one local package into another. Run `npm link` in the package you want to use. This creates a global reference. Then go into your original package and run `npm link \u003cpackage-name\u003e` to link in the other package.\n\n```\n$ cd rainbow\n$ npm link\n$ cd ../unicorn\n$ npm link rainbow\n```\n\nYou can now use `rainbow` as a dependency in the `unicorn` package.\n\n### Install a package from GitHub\n\nnpm supports using a shorthand for installing a package directly from a GitHub repo:\n\n```\n$ npm install sindresorhus/chalk\n```\n\nLet's target a specific commit as the main branch is a moving target:\n\n```\n$ npm install 'sindresorhus/chalk#51b8f32'\n```\n\nSpecify either a commit SHA, branch, tag, or nothing.\n\nYou can also install Git dependencies with semver: *(Requires npm v5 or newer)*\n\n```\n$ npm install 'sindresorhus/chalk#semver:^2.0.0'\n```\n\n### Install a specific version of a package\n\n```\n$ npm install chalk@1.0.0\n```\n\n\n### List top-level installed packages and their version\n\n```\n$ npm ls --depth=0\n```\n\n### Command help\n\nGet help docs for a command:\n\n```\n$ npm help \u003ccommand\u003e\n```\n\nExample:\n\n```\n$ npm help install\n```\n\n### Standalone version of a package\n\nQuickly get a standalone version of a package that is browserified and usable in the browser.\n\n```\nhttps://wzrd.in/standalone/\u003cpackage-name\u003e[@\u003cversion\u003e]\n```\n\nExamples:\n\n- \u003chttps://wzrd.in/standalone/object-assign\u003e\n- \u003chttps://wzrd.in/standalone/object-assign@4.0.0\u003e\n\nGreat for prototyping, but download the file or use Browserify yourself for production.\n\n## FAQ\n\n- [Check in node_modules vs. shrinkwrap](http://stackoverflow.com/questions/11459733/check-in-node-modules-vs-shrinkwrap)\n- [What is the difference between Bower and npm?](http://stackoverflow.com/questions/18641899/what-is-the-difference-between-bower-and-npm)\n- [What does `^` mean in package.json versioning?](http://stackoverflow.com/questions/22137778/what-does-mean-in-package-json-versioning)\n- [Find the version of an installed npm package](http://stackoverflow.com/questions/10972176/find-the-version-of-an-installed-npm-package)\n- [What's the difference between dependencies, devDependencies, and peerDependencies in package.json?](http://stackoverflow.com/questions/18875674/whats-the-difference-between-dependencies-devdependencies-and-peerdependencies)\n\n## Community\n\n- [`#npm` on Freenode](http://webchat.freenode.net/?channels=npm)\n- [Stack Overflow](https://stackoverflow.com/questions/tagged/npm)\n- [Reddit](https://www.reddit.com/r/npm)\n- [Twitter](https://twitter.com/npmjs)\n- [Blog](https://blog.npmjs.org)\n\n## Documentation\n\n- [Official](https://docs.npmjs.com)\n- [Troubleshooting](https://github.com/npm/npm/wiki/Troubleshooting)\n- [Semantic versioning](https://docs.npmjs.com/getting-started/semantic-versioning)\n- [Fixing npm permissions](https://docs.npmjs.com/getting-started/fixing-npm-permissions)\n- [package.json](https://docs.npmjs.com/files/package.json)\n- [npm run script](https://docs.npmjs.com/cli/run-script)\n- [Stats API](https://github.com/npm/download-counts)\n\n## Support\n\n- [npm.community](https://npm.community/c/support)\n- [Twitter](https://twitter.com/npm_support)\n- [Contact form](https://www.npmjs.com/support)\n\n## Related\n\n- [awesome-nodejs](https://github.com/sindresorhus/awesome-nodejs)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsindresorhus%2Fawesome-npm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsindresorhus%2Fawesome-npm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsindresorhus%2Fawesome-npm/lists"}