Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best practice for nodejs deployment - Directly moving node_modules to server or run npm install command

Tags:

What is the best practice for deploying a nodejs application?

1) Directly moving the node_modules folders from the development server to production server, so that our same local environment can be created in the production also. Whatever changes made to any of the node modules remotely will not affect our code.

2) Run npm install command in the production server with the help of package.json. Here the problem is, any changes in the node modules will affect our code. I have faced some issues with the loopback module (issue link).

Can anyone help me?

like image 904
Sanjay Kumar N S Avatar asked Jun 05 '18 06:06

Sanjay Kumar N S


2 Answers

Running npm install in production server cannot be done in certain scenario (lack of compiling tools, restricted internet access, etc...) and also if you have to deploy the same project on multiple machines, can be a waste of cpu, memory and bandwidth.

You should run npm install --production on a machine with the same libraries and node version of the production server, compress node_modules and deploy on production server. You should also keep the package-lock.json file to pinpoint versions.

This approach allows you also to build/test your code using development packages and then pruning the node_modules before the actual deploy.

like image 189
DBellavista Avatar answered Sep 16 '22 16:09

DBellavista


  • Moving node_modules folder is overkilled.
  • Running npm install might break the version dependencies.
  • The best approach is npm ci. It uses the package_lock file and installs the required dependencies without modify the versions. npm ci meant for continuous integration projects. LINK
like image 34
Raj Sahoo Avatar answered Sep 17 '22 16:09

Raj Sahoo