StackShareStackShare
Follow on
StackShare

Discover and share technology stacks from companies around the world.

Product

  • Stacks
  • Tools
  • Companies
  • Feed

Company

  • About
  • Blog
  • Contact

Legal

  • Privacy Policy
  • Terms of Service

© 2025 StackShare. All rights reserved.

API StatusChangelog
npm
Bynpmnpm

npm

#1in Build Automation
Stacks126kDiscussions332
Followers82.2k
OverviewDiscussions332

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 Build Automation category of a tech stack.

npm Pros & Cons

Pros of npm

  • ✓Best package management system for javascript
  • ✓Open-source
  • ✓Great community
  • ✓More packages than rubygems, pypi, or packagist
  • ✓Nice people matter
  • ✓As fast as yarn but really free of facebook
  • ✓Audit feature
  • ✓Good following
  • ✓Stability
  • ✓Super fast

Cons of npm

  • ✗Bad at package versioning and being deterministic
  • ✗Problems with lockfiles
  • ✗Node-gyp takes forever
  • ✗Super slow

npm Alternatives & Comparisons

What are some alternatives to npm?

Yarn

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.

RequireJS

RequireJS

RequireJS loads plain JavaScript files as well as more defined modules. It is optimized for in-browser use, including in a Web Worker, but it can be used in other JavaScript environments, like Rhino and Node. It implements the Asynchronous Module API. Using a modular script loader like RequireJS will improve the speed and quality of your code.

Browserify

Browserify

Browserify lets you require('modules') in the browser by bundling up all of your dependencies.

Bundler

Bundler

It provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that are needed. It is an exit from dependency hell, and ensures that the gems you need are present in development, staging, and production.

pip

pip

It is the package installer for Python. You can use pip to install packages from the Python Package Index and other indexes.

Component

Component

Component's philosophy is the UNIX philosophy of the web - to create a platform for small, reusable components that consist of JS, CSS, HTML, images, fonts, etc. With its well-defined specs, using Component means not worrying about most frontend problems such as package management, publishing components to a registry, or creating a custom build process for every single app.

npm Integrations

Doppins, Sagui, Carbide, Yarn, cdnjs and 7 more are some of the popular tools that integrate with npm. Here's a list of all 12 tools that integrate with npm.

Doppins
Doppins
Sagui
Sagui
Carbide
Carbide
Yarn
Yarn
cdnjs
cdnjs
Prepack
Prepack
pkg
pkg
Pingy CLI
Pingy CLI
Gemnasium
Gemnasium
Haiku
Haiku
GreenKeeper
GreenKeeper
Verdaccio
Verdaccio

npm Discussions

Discover why developers choose npm. Read real-world technical decisions and stack choices from the StackShare community.Showing 4 of 5 discussions.

Tim Abbott
Tim Abbott

Founder at Zulip

Dec 4, 2018

Needs adviceonYarnYarnnpmnpmNode.jsNode.js

I have mixed feelings on the Yarn/npm/Node.js ecosystem. We use it for Zulip, because you basically have to in order to have a modern JavaScript toolchain. And I like that Yarn lets us pin dependency versions out of the box for predictability in our production releases; we have to do significant work for the Python version of this feature.

But one also deals with broken third-party dependencies uploaded to npm way too often (even ignoring the malicious packages issues that have gotten a lot of press of late). And one mostly has to use nvm in order to pin a specific version of node itself in a maintainable way, and nvm is a mess.

0 views0
Comments
Nitzan Shapira
Nitzan Shapira

Dec 3, 2018

Needs adviceonPythonPythonServerlessServerlessnpmnpm

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, Golang, and Java will be available soon.

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

0 views0
Comments
Brian Renzenbrink
Brian Renzenbrink

Engineering Manager at Compass Inc.

Dec 3, 2018

Needs adviceonAWS LambdaAWS LambdaAmazon CloudFrontAmazon CloudFrontnpmnpm

At Compass, we’re big proponents of using NPM and semver (semantic versioning) when distributing our shared components as packages. NPM provides us with an industry-standard platform to publish our internal dependencies. The tools and technologies someone learns while working on a package at Compass are the same ones they’ll use in projects in the open source community. Meanwhile, semantic versioning itself plays a huge role in providing peace of mind. Users of shared components know when updates are safe enough to upgrade to, and component authors can make big updates without the fear of silently breaking the contracts they’ve made with their users. We wanted to build out a way to provide these same benefits to more than just JS libraries, and we ended up creating a lightning-fast form of semantic versioning for our CSS implementation that utilized Lambda@Edge, NPM, and some clever work by our engineers.

AWS Lambda Amazon CloudFront npm #lambdaatedge #semver #serverless

0 views0
Comments
Tobias Widmer
Tobias Widmer

CTO at Onedot

Dec 3, 2018

Needs adviceonReactReactReduxReduxScalaScala

Onedot is building an automated data preparation service using probabilistic and statistical methods including artificial intelligence (AI). From the beginning, having a stable foundation while at the same time being able to iterate quickly was very important to us. Due to the nature of compute workloads we face, the decision for a functional programming paradigm and a scalable cluster model was a no-brainer. We started playing with Apache Spark very early on, when the platform was still in its infancy. As a storage backend, we first used Cassandra, but found out that it was not the optimal choice for our workloads (lots of rather smallish datasets, data pipelines with considerable complexity, etc.). In the end, we migrated dataset storage to Amazon S3 which proved to be much more adequate to our case. In the frontend, we bet on more traditional frameworks like React/Redux, Blueprint and a number of common npm packages of our universe. Because of the very positive experience with Scala (in particular the ability to write things very expressively, use immutability across the board, etc.) we settled with TypeScript in the frontend. In our opinion, a very good decision. Nowadays, transpiling is a common thing, so we thought why not introduce the same type-safety and mathematical rigour to the user interface?

0 views0
Comments
View all 5 discussions

Try It

Visit Website

Adoption

On StackShare

Companies
6.58k
9AABCD+6578
Developers
93.6k
YJRNMZ+93589