https://github.com/correia-jpv/fucking-awesome-npm
Awesome npm resources and tips. With repository stars⭐ and forks🍴
https://github.com/correia-jpv/fucking-awesome-npm
List: fucking-awesome-npm
awesome awesome-list list node nodejs npm npm-module npm-package npmjs npmjs-packages package-manager yarn
Last synced: 23 days ago
JSON representation
Awesome npm resources and tips. With repository stars⭐ and forks🍴
- Host: GitHub
- URL: https://github.com/correia-jpv/fucking-awesome-npm
- Owner: Correia-jpv
- License: cc0-1.0
- Created: 2022-01-31T18:33:23.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-04-10T00:57:42.000Z (25 days ago)
- Last Synced: 2025-04-10T01:43:08.606Z (25 days ago)
- Topics: awesome, awesome-list, list, node, nodejs, npm, npm-module, npm-package, npmjs, npmjs-packages, package-manager, yarn
- Homepage:
- Size: 134 KB
- Stars: 7
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: contributing.md
- Funding: .github/FUNDING.yml
- License: license
- Code of conduct: code-of-conduct.md
Awesome Lists containing this project
- ultimate-awesome - fucking-awesome-npm - Awesome npm resources and tips. With repository stars⭐ and forks🍴. (Programming Language Lists / JavaScript Lists)
README
# Awesome npm [](https://awesome.re) 🌎 [
](www.npmjs.com)
> Awesome 🌎 [npm](www.npmjs.com) resources and tips
[npm](https://en.wikipedia.org/wiki/Npm_(software)) is a package manager for the JavaScript programming language and comes bundled in the 🌎 [Node.js](en.wikipedia.org/wiki/Node.js) runtime.
*Please read the [contribution guidelines](contributing.md) before contributing.*
## Contents
- [Articles](#articles)
- [Tools](#tools)
- [Packages](#packages)
- [Clients](#clients)
- [Tips](#tips)
- [FAQ](#faq)
- [Community](#community)
- [Documentation](#documentation)
- [Support](#support)
- [Related](#related)## Articles
-
?⭐
?🍴
[Small focused modules](https://github.com/sindresorhus/ama/issues/10#issuecomment-117766328))
- [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.
- 🌎 [Writing small modules](web.archive.org/web/20180302125059/https://substack.net/how_I_write_modules)
- 🌎 [Semver: A Primer](nodesource.com/blog/semver-a-primer/) *(Must read!)*
- 🌎 [Semver: Tilde and Caret](nodesource.com/blog/semver-tilde-and-caret/)
- 🌎 [Offline installation of npm packages](addyosmani.com/blog/using-npm-offline/)
- 🌎 [Task automation with npm run](web.archive.org/web/20180302164842/http://substack.net/task_automation_with_npm_run)
- 🌎 [How to use npm as a build tool](www.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/)
-2490⭐
454🍴
[Install npm packages globally without sudo on macOS and Linux](https://github.com/sindresorhus/guides/blob/main/npm-global-without-sudo.md))
- 🌎 [Optimizing the footprint of an npm package](medium.com/@goldglovecb/npm-needs-a-personal-trainer-537e0f8859c6)
-9850⭐
854🍴
[The Art of Node](https://github.com/maxogden/art-of-node#modules)) - An introduction to Node.js and client-side development with npm.
- 🌎 [Why npm scripts?](css-tricks.com/why-npm-scripts/) - An introduction to npm scripts with common packages and scripts, as well as a boilerplate project.## Tools
### Web
- 🌎 [npms](npms.io) - Superb package search with deep analysis of package quality using a 🌎 [myriad of metrics](npms.io/about).
- 🌎 [NodeICO](nodei.co/) - Package badges.
- 🌎 [Libraries.io](libraries.io/npm) - Package discovery.
- [npm-stat](http://npm-stat.com) - Statistics charts for packages.
- [npmgraph](http://npm.anvaka.com) - Visualization of dependencies.
- [npm trends](http://www.npmtrends.com) - Compare package download counts over time.
- 🌎 [npm-top](gist.github.com/bcoe/dcc961b869bbf6685002) - npm users by downloads.
- [npm semver calculator](http://semver.npmjs.com) - Visually explore what versions of a package a semver range matches.
- 🌎 [ghub.io](ghub.io) - Redirects to the GitHub repo of an npm package.
- 🌎 [moiva](moiva.io) - Discover and compare packages.### Browser extensions
- 🌎 [Octo-Linker](chrome.google.com/webstore/detail/octo-linker/jlmafbaeoofdegohdhinkhilhclaklkp) - Chrome extension to navigate across npm packages on GitHub with ease.
- 🌎 [npm-hub](chrome.google.com/webstore/detail/npm-hub/kbbbjimdjbjclaebffknlabpogocablj) - Chrome extension to explore npm dependencies on GitHub repos.
- 🌎 [github-npm-stats](chrome.google.com/webstore/detail/github-npm-stats/oomfflokggoffaiagenekchfnpighcef) - View npm download stats on GitHub.
- 🌎 [npm-search-update](chrome.google.com/webstore/detail/npm-search-update/kagpoplamlmaonpddimnnigiojimihnh) - Chrome extension to quickly search for dependencies and monitor changes from the npm registry.### CLI
-
483⭐
37🍴
[zsh-better-npm-completion](https://github.com/lukechilds/zsh-better-npm-completion)) - Better ZSH completion for npm.
-8572⭐
198🍴
[npkill](https://github.com/voidcosmos/npkill)) - Easily find and remove old and heavy node_modules folders.## Packages
### Publishing
-
7626⭐
301🍴
[np](https://github.com/sindresorhus/np)) - A better `npm publish`.
-737⭐
23🍴
[publish-please](https://github.com/inikulin/publish-please)) - Publish packages safely and gracefully.
-102⭐
10🍴
[npm-release](https://github.com/phuu/npm-release)) - Making releasing to npm so easy a kitten could probably do it™.
-85⭐
7🍴
[pkgfiles](https://github.com/timoxley/pkgfiles)) - List all files which would be published in a package.
-8355⭐
543🍴
[release-it](https://github.com/webpro/release-it)) - Automate releases for Git repositories and/or npm packages. Changelog generation, GitHub/GitLab releases, etc.
-21718⭐
1713🍴
[semantic-release](https://github.com/semantic-release/semantic-release)) - Fully automated package publishing.### Registry
-
287⭐
26🍴
[npm-name](https://github.com/sindresorhus/npm-name-cli)) - Check whether a package name is available on npm.
-240⭐
63🍴
[package-json](https://github.com/sindresorhus/package-json)) - Get the package.json of a package from the npm registry.
-53⭐
13🍴
[latest-version](https://github.com/sindresorhus/latest-version-cli)) - Get the latest version of an npm package.
-52⭐
8🍴
[npm-keyword](https://github.com/sindresorhus/npm-keyword)) - Get a list of npm packages with a certain keyword.
-57⭐
13🍴
[npm-user](https://github.com/sindresorhus/npm-user)) - Get user info of an npm user.
-32⭐
6🍴
[npm-email](https://github.com/sindresorhus/npm-email)) - Get the email of an npm user.
-5⭐
0🍴
[npm-user-packages](https://github.com/kevva/npm-user-packages-cli)) - Get packages by an npm user.
-27⭐
1🍴
[dpn](https://github.com/gillstrom/dpn)) - Get the dependents of a user's npm packages.
-51⭐
17🍴
[npm-stats](https://github.com/hughsk/npm-stats)) - Get data from an npm registry.
-116⭐
60🍴
[npm-cli-login](https://github.com/postmanlabs/npm-cli-login)) - Log in to npm.
-2923⭐
255🍴
[nrm](https://github.com/Pana/nrm)) - Registry manager.
-484⭐
69🍴
[npm-register](https://github.com/dickeyxxx/npm-register)) - Easy to set up and maintain npm registry and proxy.
-16823⭐
1395🍴
[verdaccio](https://github.com/verdaccio/verdaccio)) - Lightweight private npm proxy registry.
- 🌎 [cloudsmith](cloudsmith.io/l/npm-registry/) - A fully managed package management SaaS with support for public and private npm registries (and many others).### Other
-
199⭐
10🍴
[npm-home](https://github.com/sindresorhus/npm-home)) - Open the npm page of a package.
-191⭐
9🍴
[gh-home](https://github.com/sindresorhus/gh-home)) - Open the GitHub page of a package.
-968⭐
70🍴
[david](https://github.com/alanshaw/david)) - Check if your package dependencies are out of date.
-6618⭐
237🍴
[npm-check](https://github.com/dylang/npm-check)) - Check for outdated, incorrect, and unused dependencies, as well as interactive update.
-340⭐
30🍴
[npm-upgrade](https://github.com/th0r/npm-upgrade)) - Update outdated npm dependencies interactively.
-771⭐
47🍴
[npm-shrinkwrap](https://github.com/uber/npm-shrinkwrap)) - A consistent shrinkwrap tool.
-2527⭐
147🍴
[npm-windows-upgrade](https://github.com/felixrieseberg/npm-windows-upgrade)) - Upgrade npm on Windows.
-741⭐
82🍴
[generator-nm](https://github.com/sindresorhus/generator-nm)) - Scaffold out an npm package.
-162⭐
13🍴
[package-up](https://github.com/sindresorhus/package-up)) - Find the closest package.json file.
-266⭐
20🍴
[read-package-up](https://github.com/sindresorhus/read-package-up)) - Read the closest package.json file.
-200⭐
48🍴
[normalize-package-data](https://github.com/npm/normalize-package-data)) - Normalize package metadata.
-121⭐
14🍴
[package-config](https://github.com/sindresorhus/package-config)) - Get namespaced config from the closest package.json.
-104⭐
11🍴
[npm-run-path](https://github.com/sindresorhus/npm-run-path)) - Run locally installed binaries in the terminal by name like with global ones.
-1166⭐
81🍴
[local-npm](https://github.com/nolanlawson/local-npm)) - Use npm 🌎 [offline](addyosmani.com/blog/using-npm-offline/).
-93⭐
11🍴
[npe](https://github.com/zeke/npe)) - CLI for inspecting and editing properties in package.json.
-20⭐
0🍴
[engine-deps](https://github.com/samccone/engine-deps)) - Manage Node.js version specific dependencies with ease.
-4⭐
0🍴
[enpeem-search](https://github.com/amovah/enpeem-search)) - Search packages by scraping the npm web search.
-48⭐
1🍴
[npm-issues](https://github.com/seanzarrin/npm-issues)) - Search known issues of all your packages at once.
-42⭐
1🍴
[john](https://github.com/davej/john)) - Make npm3's flat dependencies easier to find and sort.
-942⭐
35🍴
[ntl](https://github.com/ruyadorno/ntl)) - Interactive CLI menu to list & run npm tasks.
-9⭐
1🍴
[decheck](https://github.com/egoist/decheck)) - Explore dependencies of npm packages in the command-line.
-798⭐
38🍴
[shrinkpack](https://github.com/JamieMason/shrinkpack)) - Lock down your dependencies and install offline.
-124⭐
3🍴
[redrun](https://github.com/coderaiser/redrun)) - Expand scripts from package.json to improve execution speed.
-423⭐
26🍴
[package-size](https://github.com/egoist/package-size)) - Get the bundle size of an npm package.
-771⭐
42🍴
[synp](https://github.com/imsnif/synp)) - Convert yarn.lock to package-lock.json and vice versa.
-5799⭐
243🍴
[npm-run-all](https://github.com/mysticatea/npm-run-all)) - CLI tool to run multiple npm-scripts in parallel or serial.
-825⭐
49🍴
[onchange](https://github.com/Qard/onchange)) - Watch files and folders and run a command when something changed.
-72⭐
3🍴
[cli-error-notifier](https://github.com/micromata/cli-error-notifier)) - Sends native desktop notifications when npm scripts fail.
-1006⭐
43🍴
[luna](https://github.com/rvpanoz/luna)) - App to manage npm dependencies.
-1236⭐
39🍴
[emma-cli](https://github.com/maticzav/emma-cli)) - Interactive CLI package search utility.
-790⭐
35🍴
[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.## Clients
-
41518⭐
2732🍴
[yarn](https://github.com/yarnpkg/yarn)) - Fast, reliable, and secure dependency management.
-8796⭐
3386🍴
[npm](https://github.com/npm/cli)) - The official client.
-31288⭐
1094🍴
[pnpm](https://github.com/pnpm/pnpm)) - Fast, disk space efficient package manager.## Tips
### Update to the latest npm version
```
$ npm install --global npm
```*
2527⭐
147🍴
[Windows users, read more.](https://github.com/felixrieseberg/npm-windows-upgrade))*### Command aliases
- `npm i ` → `npm install`
- `npm i -D` → `npm install --save-dev`
- `npm t` → `npm test`
- `npm it` → `npm install && npm test`
- `npm r` → `npm uninstall`
- `npm un` → `npm uninstall`
- `npm up` → `npm update`### Shell aliases
Speed up your common npm tasks.
In your `.zshrc`/`.bashrc`:
```sh
alias ni='npm install'
alias nid='npm install --save-dev'
alias nig='npm install --global'
alias nt='npm test'
alias nit='npm install && npm test'
alias nk='npm link'
alias nr='npm run'
alias ns='npm start'
alias nf='npm cache clean && rm -rf node_modules && npm install'
alias nlg='npm list --global --depth=0'
```### Don't add to package.json when installing
By 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`:
```
$ npm install --save-dev ava
```### Run scripts
You can easily 🌎 [run scripts](docs.npmjs.com/cli/run-script) using npm by adding them to the `"scripts"` field in package.json and run them with `npm run `. 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.
```json
{
"name": "awesome-package",
"scripts": {
"cat": "cat-names"
},
"dependencies": {
"cat-names": "^1.0.0"
}
}
``````
$ npm run cat
Max
```All package.json properties are 🌎 [exposed](docs.npmjs.com/misc/scripts#packagejson-vars) as environment variables:
```json
{
"name": "awesome-package",
"scripts": {
"name": "echo $npm_package_name"
}
}
``````
$ npm run name
awesome-package
```#### Passing options to commands
You 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](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.
```json
{
"name": "awesome-package",
"scripts": {
"xo": "xo",
"xo:fix": "npm run xo -- --fix",
}
}
```*Adding the `-- --fix ` option is like executing `xo --fix`*.
#### Silent option
`npm run` has a `--silent` option which is especially useful when combining npm scripts.
Imagine you have a setup for linting your JavaScript files like the following:
```json
{
"name": "awesome-package",
"scripts": {
"xo": "xo",
"xo:fix": "npm run xo --silent -- --fix",
}
}
```*Using the `--silent` option reduces the output in the terminal. See 🌎 [this comparison](twitter.com/mkuehnel/status/957965749473210369).*
### Lifecycle scripts
npm comes with predefined 🌎 [lifecyle scripts](docs.npmjs.com/misc/scripts) which are excuted under specific conditions if they are defined in your package.json.
```json
{
"name": "awesome-package",
"scripts": {
"prepublishOnly": "nsp check"
},
"devDependencies": {
"nsp": "^3.0.0"
}
}
```This will be executed automatically before your npm package is published to the registry via `npm publish` to check for known vulnerabilties in your dependencies.
*Note: **prepublishOnly** is available since npm v4.0.0. See 🌎 [npm docs](docs.npmjs.com/misc/scripts#deprecation-note).*
#### `npm start` and `npm test`
`npm start` and `npm test` are also lifecycle scripts but are not executed automatically.
```json
{
"name": "awesome-package",
"scripts": {
"start": "node server.js",
"test": "ava"
},
"devDependencies": {
"ava": "^1.0.0"
}
}
```Therefore they can be executed simply with:
```console
$ npm test
$ npm start
```#### `pre` and `post` scripts
These are special lifecycle scripts which can be used to run scripts automatically in sequence.
```json
{
"name": "awesome-package",
"scripts": {
"pretest": "eslint .",
"test": "ava"
},
"devDependencies": {
"eslint": "^4.19.0",
"ava": "^1.0.0"
}
}
``````console
$ npm test
```This 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.
*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.*
### Run script with `npx`
`npm` 🌎 [comes bundled](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 `` to run.
```json
{
"name": "awesome-package",
"dependencies": {
"cat-names": "^1.0.0"
}
}
```If the binary is already installed, it will be executed from `node_modules/.bin`.
```
$ npx cat-names
Max
```But if the binary is missing, it will be installed first.
```
$ npx dog-names
npx: installed 46 in 3.136s
Bentley
```### Run commands with different Node.js versions
With `npx` (Comes bundled with npm v5.2.0 or newer) and the 🌎 [`node-bin`](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),
1616⭐
121🍴
[`nave`](https://github.com/isaacs/nave)), or19199⭐
756🍴
[`n`](https://github.com/tj/n)).```
$ npx [email protected] -- node --version
v6.11.0
```### Link local packages
Sometimes 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 ` to link in the other package.
```
$ cd rainbow
$ npm link
$ cd ../unicorn
$ npm link rainbow
```You can now use `rainbow` as a dependency in the `unicorn` package.
### Install a package from GitHub
npm supports using a shorthand for installing a package directly from a GitHub repo:
```
$ npm install sindresorhus/chalk
```Let's target a specific commit as the main branch is a moving target:
```
$ npm install 'sindresorhus/chalk#51b8f32'
```Specify either a commit SHA, branch, tag, or nothing.
You can also install Git dependencies with semver: *(Requires npm v5 or newer)*
```
$ npm install 'sindresorhus/chalk#semver:^2.0.0'
```### Install a specific version of a package
```
$ npm install [email protected]
```### List top-level installed packages and their version
```
$ npm ls --depth=0
```### Command help
Get help docs for a command:
```
$ npm help
```Example:
```
$ npm help install
```### Standalone version of a package
Quickly get a standalone version of a package that is browserified and usable in the browser.
```
https://wzrd.in/standalone/[@]
```Examples:
-
-Great for prototyping, but download the file or use Browserify yourself for production.
## FAQ
- [Check in node_modules vs. shrinkwrap](http://stackoverflow.com/questions/11459733/check-in-node-modules-vs-shrinkwrap)
- [What is the difference between Bower and npm?](http://stackoverflow.com/questions/18641899/what-is-the-difference-between-bower-and-npm)
- [What does `^` mean in package.json versioning?](http://stackoverflow.com/questions/22137778/what-does-mean-in-package-json-versioning)
- [Find the version of an installed npm package](http://stackoverflow.com/questions/10972176/find-the-version-of-an-installed-npm-package)
- [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)## Community
- [`#npm` on Freenode](http://webchat.freenode.net/?channels=npm)
- 🌎 [Stack Overflow](stackoverflow.com/questions/tagged/npm)
- 🌎 [Reddit](www.reddit.com/r/npm)
- 🌎 [Twitter](twitter.com/npmjs)
- 🌎 [Blog](blog.npmjs.org)## Documentation
- 🌎 [Official](docs.npmjs.com)
-?⭐
?🍴
[Troubleshooting](https://github.com/npm/npm/wiki/Troubleshooting))
- 🌎 [Semantic versioning](docs.npmjs.com/getting-started/semantic-versioning)
- 🌎 [Fixing npm permissions](docs.npmjs.com/getting-started/fixing-npm-permissions)
- 🌎 [package.json](docs.npmjs.com/files/package.json)
- 🌎 [npm run script](docs.npmjs.com/cli/run-script)
-329⭐
27🍴
[Stats API](https://github.com/npm/download-counts))## Support
- 🌎 [npm.community](npm.community/c/support)
- 🌎 [Twitter](twitter.com/npm_support)
- 🌎 [Contact form](www.npmjs.com/support)## Related
-
60512⭐
6011🍴
[awesome-nodejs](https://github.com/sindresorhus/awesome-nodejs))## Source
4554⭐
259🍴
[sindresorhus/awesome-npm](https://github.com/sindresorhus/awesome-npm))