Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the purpose of the 'node_modules' folder?

What exactly is the node_modules folder and what is it for?

I know when we download any library with npm, the library goes to folder node_modules. I also know that, when we are going to upload it (to GitHub, for example) we have to ignore the node_modules folder, because it takes a lot of space. Through file package.json we can download all dependencies using npm i.

Let's say I want to deploy my app/website to some server/host, do I have to upload the node_modules folder to server as well?

And another thing. Usually, I download my jQuery and Bootstrap files from the website and copy in the content to the css/js folder inside my project, but this time I tried with npm and everything goes to folder node_modules and I'm using Cordova. When I execute the command cordova build, neither my jQuery nor my Bootstrap files are generated.

So those are my questions:

  • if I want to host my project, do I really have to upload the node_modules folder as well?
  • And when it's Cordova or Ionic, do I also have to copy the node_modules folder to the www folder?
  • If so, what is the point of using npm to download libraries? Is this how it's really done? Which one is better? Going to the website, download the file, and paste inside www, or download through npm?
like image 399
izaac mendes Avatar asked Aug 07 '20 02:08

izaac mendes


People also ask

What is node_modules folder in angular?

node_modules/ − The npm package installed is node_modules. You can open the folder and see the packages available. src/ − This folder is where we will work on the project using Angular 7. Inside src/ you will app/ folder created during the project setup and holds all the required files required for the project.

What is node_modules folder in React?

A node_modules directory contains all the React dependencies packages: react , react-dom , and their transitive dependencies like webpack , babal , rxjs , ESLint , etc., to build and run a React project.

Where is node modules folder?

Global modules are installed in the /usr/local/lib/node_modules project directory in the standard system, which is the system's root. Print the location of all global modules on your system using this command.

Do I need all node modules?

To have a node modules in each project is totally optional. You can install package globally and use in you project. But the problem is when packages got updated code may break. So it is always preferable to have node modules specific to each project.


1 Answers

What is the purpose of node_modules folder?

You can think of the node_modules folder like a cache for the external modules that your project depends upon. When you npm install them, they are downloaded from the web and copied into the node_modules folder and Node.js is trained to look for them there when you import them (without a specific path). I refer to it as a cache because the node_modules folder can be entirely recreated from scratch at any time by just reinstalling all the dependent modules (that should be listed in your project folders).

but I know when we are going to upload it to github we have to ignore the node_modules folder because it takes a lot of space.

This is because there's no reason to store copies of all your dependent modules in your own GitHub project. The exact version you were using is known and stored in your package.json or package-lock.json so at any time you or anyone else using your project can download your code and then retch all the other dependent modules from their original source (including even the exact same versions you were using). So, there isn't any reason to store a separate duplicate copy of all those dependent modules in your own project. That would just be wasteful and would complicate upgrading to a newer version of all those dependent modules.

So that's my question, if I want to host my project, Do I really have to upload the node_modules as well?

If you have your project running on your local machine and you now want to move it to your hosting location, it is best to reinstall all the dependent modules on the hosting machine and not copy them from your development machine. This is because the process of installing them on the hosting machine (which might be a different platform or OS than your development machine) may use a bit of a different install process for the specific hosting environment.

like image 185
jfriend00 Avatar answered Oct 12 '22 03:10

jfriend00