19.3K
14.7K
+ 1
1.6K

What is npm?

npm is the command-line interface to the npm ecosystem. It is battle-tested, surprisingly flexible, and used by hundreds of thousands of JavaScript developers every day.
npm is a tool in the Front End Package Manager category of a tech stack.
npm is an open source tool with 17.2K GitHub stars and 3.2K GitHub forks. Here’s a link to npm's open source repository on GitHub

Who uses npm?

Companies
3643 companies reportedly use npm in their tech stacks, including Instacart, 9GAG, and Intuit.

Developers
15042 developers on StackShare have stated that they use npm.

npm Integrations

Bitbucket, Gemnasium, Basscss, CanJS, and cdnjs are some of the popular tools that integrate with npm. Here's a list of all 33 tools that integrate with npm.

Why developers like npm?

Here’s a list of reasons why companies and developers use npm
npm Reviews

Here are some stack decisions, common use cases and reviews by companies and developers who chose npm in their tech stack.

Johnny Bell
Johnny Bell
Senior Software Engineer at StackShare · | 17 upvotes · 136.9K views
Webpack
Webpack
Node.js
Node.js
Yarn
Yarn
npm
npm
Babel
Babel
Prettier
Prettier
ESLint
ESLint
#ES6
#ES5

So when starting a new project you generally have your go to tools to get your site up and running locally, and some scripts to build out a production version of your site. Create React App is great for that, however for my projects I feel as though there is to much bloat in Create React App and if I use it, then I'm tied to React, which I love but if I want to switch it up to Vue or something I want that flexibility.

So to start everything up and running I clone my personal Webpack boilerplate - This is still in Webpack 3, and does need some updating but gets the job done for now. So given the name of the repo you may have guessed that yes I am using Webpack as my bundler I use Webpack because it is so powerful, and even though it has a steep learning curve once you get it, its amazing.

The next thing I do is make sure my machine has Node.js configured and the right version installed then run Yarn. I decided to use Yarn because when I was building out this project npm had some shortcomings such as no .lock file. I could probably move from Yarn to npm but I don't really see any point really.

I use Babel to transpile all of my #ES6 to #ES5 so the browser can read it, I love Babel and to be honest haven't looked up any other transpilers because Babel is amazing.

Finally when developing I have Prettier setup to make sure all my code is clean and uniform across all my JS files, and ESLint to make sure I catch any errors or code that could be optimized.

I'm really happy with this stack for my local env setup, and I'll probably stick with it for a while.

See more
Ali Soueidan
Ali Soueidan
Creative Web Developer at Ali Soueidan · | 16 upvotes · 121.8K views
npm
npm
Vue.js
Vue.js
vuex
vuex
JavaScript
JavaScript
Pug
Pug
Sass
Sass
JSON
JSON
Git
Git
GitHub
GitHub
ES6
ES6
Asana
Asana
Adobe Illustrator
Adobe Illustrator
PHP
PHP
Babel
Babel

Application and Data: Since my personal website ( https://alisoueidan.com ) is a SPA I've chosen to use Vue.js, as a framework to create it. After a short skeptical phase I immediately felt in love with the single file component concept! I also used vuex for state management, which makes working with several components, which are communicating with each other even more fun and convenient to use. Of course, using Vue requires using JavaScript as well, since it is the basis of it.

For markup and style, I used Pug and Sass, since they’re the perfect match to me. I love the clean and strict syntax of both of them and even more that their structure is almost similar. Also, both of them come with an expanded functionality such as mixins, loops and so on related to their “siblings” (HTML and CSS). Both of them require nesting and prevent untidy code, which can be a huge advantage when working in teams. I used JSON to store data (since the data quantity on my website is moderate) – JSON works also good in combo with Pug, using for loops, based on the JSON Objects for example.

To send my contact form I used PHP, since sending emails using PHP is still relatively convenient, simple and easy done.

DevOps: Of course, I used Git to do my version management (which I even do in smaller projects like my website just have an additional backup of my code). On top of that I used GitHub since it now supports private repository for free accounts (which I am using for my own). I use Babel to use ES6 functionality such as arrow functions and so on, and still don’t losing cross browser compatibility.

Side note: I used npm for package management. 🎉

*Business Tools: * I use Asana to organize my project. This is a big advantage to me, even if I work alone, since “private” projects can get interrupted for some time. By using Asana I still know (even after month of not touching a project) what I’ve done, on which task I was at last working on and what still is to do. Working in Teams (for enterprise I’d take on Jira instead) of course Asana is a Tool which I really love to use as well. All the graphics on my website are SVG which I have created with Adobe Illustrator and adjusted within the SVG code or by using JavaScript or CSS (SASS).

See more
npm
npm
Yarn
Yarn
#PackageManagers

#PackageManagers After a long time where npm failed to install packages and lot's of googling on answers, we switched to Yarn and alomost all those problems where solved. Today i mostly use "yarn add" instead of "npm install --save".

See more
Nitzan Shapira
Nitzan Shapira
at Epsagon · | 11 upvotes · 118.2K views
atEpsagonEpsagon
Python
Python
Serverless
Serverless
npm
npm
Node.js
Node.js
Go
Go
Java
Java
GitHub
GitHub
AWS Lambda
AWS Lambda

At Epsagon, we use hundreds of AWS Lambda functions, most of them are written in Python, and the Serverless Framework to pack and deploy them. One of the issues we've encountered is the difficulty to package external libraries into the Lambda environment using the Serverless Framework. This limitation is probably by design since the external code your Lambda needs can be usually included with a package manager.

In order to overcome this issue, we've developed a tool, which we also published as open-source (see link below), which automatically packs these libraries using a simple npm package and a YAML configuration file. Support for Node.js, Go, and Java will be available soon.

The GitHub respoitory: https://github.com/epsagon/serverless-package-external

See more
Tassanai Singprom
Tassanai Singprom
JavaScript
JavaScript
PHP
PHP
HTML5
HTML5
jQuery
jQuery
Redis
Redis
Amazon EC2
Amazon EC2
Ubuntu
Ubuntu
Sass
Sass
Vue.js
Vue.js
Firebase
Firebase
Laravel
Laravel
Lumen
Lumen
Amazon RDS
Amazon RDS
GraphQL
GraphQL
MariaDB
MariaDB
Google Analytics
Google Analytics
Postman
Postman
Elasticsearch
Elasticsearch
Git
Git
GitHub
GitHub
GitLab
GitLab
npm
npm
Visual Studio Code
Visual Studio Code
Kibana
Kibana
Sentry
Sentry
BrowserStack
BrowserStack
Slack
Slack

This is my stack in Application & Data

JavaScript PHP HTML5 jQuery Redis Amazon EC2 Ubuntu Sass Vue.js Firebase Laravel Lumen Amazon RDS GraphQL MariaDB

My Utilities Tools

Google Analytics Postman Elasticsearch

My Devops Tools

Git GitHub GitLab npm Visual Studio Code Kibana Sentry BrowserStack

My Business Tools

Slack

See more
Tom Klein
Tom Klein
CEO at Gentlent · | 9 upvotes · 42.1K views
atGentlentGentlent
Git
Git
GitHub
GitHub
GitLab
GitLab
Docker
Docker
Kubernetes
Kubernetes
HAProxy
HAProxy
Varnish
Varnish
npm
npm
Visual Studio Code
Visual Studio Code

We're using Git through GitHub for public repositories and GitLab for our private repositories due to its easy to use features. Docker and Kubernetes are a must have for our highly scalable infrastructure complimented by HAProxy with Varnish in front of it. We are using a lot of npm and Visual Studio Code in our development sessions.

See more

Jobs that mention npm as a desired skillset

See all jobs

npm Alternatives & Comparisons

What are some alternatives to npm?
Yarn
Yarn caches every package it downloads so it never needs to again. It also parallelizes operations to maximize resource utilization so install times are faster than ever.
gulp
Build system automating tasks: minification and copying of all JavaScript files, static images. More capable of watching files to automatically rerun the task when a file changes.
Apache Maven
Maven allows a project to build using its project object model (POM) and a set of plugins that are shared by all projects using Maven, providing a uniform build system. Once you familiarize yourself with how one Maven project builds you automatically know how all Maven projects build saving you immense amounts of time when trying to navigate many projects.
Bower
Bower is a package manager for the web. It offers a generic, unopinionated solution to the problem of front-end package management, while exposing the package dependency model via an API that can be consumed by a more opinionated build stack. There are no system wide dependencies, no dependencies are shared between different apps, and the dependency tree is flat.
NuGet
A free and open-source package manager designed for the Microsoft development platform. It is also distributed as a Visual Studio extension.
See all alternatives

npm's Followers
14692 developers follow npm to keep up with related blogs and decisions.
Zhou Wei
Tia Rakotoniera
Alexander Buch
Gregory Abbott
Michael O'Hanlon
valshuty
Tomer Ovadia
Bertrand Chevrier
praveen kumar
Taous Oukacha