Speeding up the npm install

speed up npm install docker
npm install slow on windows
yarn install
how to avoid npm install every time
yarn vs npm
npm cache
npm set progress=false
npm clean-install

I am trying to speed up the npm install during the build process phase. My package.json has the list of packages pretty much with locked revisions in it. I've also configured the cache directory using the command

npm config set cache /var/tmp/npm-cache --global

However, on trying to install using npm install -g --cache, I find that this step isn't reducing the time to install by just loading the packages from cache as I would expect. In fact, I doubt if it's even using the local cache to look up packages first.


As suggested by @Daniel Serodio

You could also include your node_modules folder inside your repository but you should probably zip it first than add to repo, and while installing you can unzip it and just

 npm rebuild

(which works cross platform) it is quite fast.

This would also give you the benefit of full control over all your dependencies.

Also you can set the process flag to false to increase your speed by 2x.

npm set progress=false

Read source for more info

Speeding up the npm install, Running npm install will generate package-lock.json file if it didn't exist with the versions from current node_modules . Manual bumping of  In this post I will describe how to speed up npm install. Concourse has a built-in directory caching system from our workspace. Just add directories to the task configuration in the caches: field.


Proposing two more modern approches:

1) npm ci

Use npm ci, which is available from npm version 5.7.0 (although I recommend 5.7.1 and upwards because of the broken release) - this requires package-lock.json to be present and it skips building your dependency tree off of your package.json file, respecting the already resolved dependency URLs in your lock file.

A very quick boost for your CI/CD envs (our build time was cut down to a quarter of the original!) and/or to make sure all your developers sit on the same versions of dependencies during development (without having to hard-code strict versions in your package.json file).

Note however that npm ci removes the node_modules/ directory before installing, so it won't benefit from any caching strategies.

2) npm i --prefer-offline

Use the --prefer-offline flag with your regular npm install / npm i. With this approach, you need to make sure you've cached your node_modules/ directory between builds (in a CI/CD environment). If it fails to find packages locally with the specific version, it falls back to the network safely.

How To Speed Up Continuous Integration Build With New NPM CI , So can we speed up npm installs? Yes! And I wanted to keep things simple, I didn't want to go down the road of having a pre-installed docker  npm install at 20 seconds, vs yarn and npm at under 4 seconds. If you clean the workspace on every build (or use a build service that doesn't cache environments): Best: Use yarn install or pnpm install - 77% + 63% faster than npm install. 2nd Best: Use npm ci --prefer-offline --no-audit - 53% faster than npm install.


It's better to install pnpm package using the following command:

npm i -g pnpm

pnpm uses hard links and symlinks to save one version of a module only ever once on a disk. When using npm or Yarn for example, if you have 100 projects using the same version of lodash, you will have 100 copies of lodash on disk. With pnpm, lodash will be saved in a single place on the disk and a hard link will put it into the node_modules where it should be installed.

As an example I can mention that whenever you want to install the dependencies of package.json file, what you should do is simply that enter the pnpm i and it handles the other things by itself.

NPM Install, Unfortunately, installing all the packages from npm on every build is prohibitively slow (despite npm's local download cache). One of npm's  A basic npm install on a SPFx 1.4.1 project took, 120.62 seconds. and with a minor change, I was able to get this down to. 47.00 seconds. That is 38% the time, or your normal npm install is 156% slower!!!!! Damn! Multiply that with the number of times you do an npm install and this will certainly add a few years to your life. How exactly did I do this?


Speeding Up NPM Installs, days and found it to be a great server for automation for my private projects. In this post I will describe how to speed up npm install.Concours. How to crazy easily speed up your npm install speed Thanks to Gavin Joyce i recently found out how easily you could speed up your npm install - just do npm set progress=false and you're done! That's so sweet :)


As very modern solution you can start to use Docker. Docker allows you virtualize and pre-define as image the current state of your code, including installed npm-modules and other goodies.

Once the docker image for your infrastructure/env is built locally, or retrieved from remote repository, it will be stored on the host machine, and you can spin server in seconds. Another benefit of it is that you use same virtualized code infrastructure on any machine where you deploy your code. Docker speeds up install/deployment processes and is widely used technology.

To start using docker is enough to (all the snippets are just mock/example for pre-setup and are not by any means most robust/elegant solution) :

1) Install docker and docker-compose using manuals and get some basic understanding of it at docker.com

2) Write Dockerfile file in root of your application

FROM node:6.9.5
RUN mkdir /usr/local/app
WORKDIR  /usr/local/app
COPY package.json package.json
RUN npm install

3) create docker-compose.yml in the root of your project with such content:

version: "2"
server:
  hostname: server
  container_name: server
  image: server
  build: .
  command: sh -c 'NODE_ENV=development PORT=8080 node app.js' 
  ports:
    - "8080:8080"
  volumes: #list of folders and files to use 
    - ${PWD}/server:/usr/local/server
    - ${PWD}/app.js:/usr/local/app.js

4) To start server you will need to docker-compose up -d. To see the logs docker-compose logs -f server. If you will restart your server it will do it in seconds once it built the image already at once. Then it will cache build layers locally so next run will take only few seconds.

I know this might be bit of a robust solution, but I am sure it is have most potential/flexibility and is widely used in industry. And while it requires some learning for anyone who did not use Docker before, in my humble oppinion, it is the best one for your problem.

How to speed up npm install in continuous integration, When you use Node.js in your project, you need to take care of node_modules installation in your CI/CD pipeline. You may use npm install,  Speeding Up NPM Installs. Posted in time npm install real 2m59.663s user 2m54.274s sys 0m46.725s having built it up from a small freelance operation in


How to speed up Node.js modules installation in CI/CD pipeline as , In my personal experience, I've seen npm install take upwards of 5 minutes. Now, if you have separate stages (Gate, CI, different environment  If you really want to speed up the npm install during the Dockerfile build process, you can copy your existing node_modules from your host machine to your Docker image over ssh. This allows you to build a node_modules from scratch natively (or use your existing dev node_modules) on your host which is fast- er.


How to speed up Node re-builds by leveraging docker multi-stage , Thanks to Gavin Joyce i recently found out how easily you could speed up your npm install - just do npm set progress=false and you're done! Travis CI runs couple of build steps for every triggered build. One of them is the install step which runs npm install for all node projects by default. Luckily there is a simple way to override


How to crazy easily speed up your npm install speed, During the installation of a node app, the npm install step is doubtless the most time consuming one. Assuming your network is somehow slow it  After that, npm install is just wasting time because it takes 2-3 minutes to just determin the packages are already installed. Also, it seems to always reinstall the packages with -g global flag, even when existing.