Oii Davi! Tudo bem?
Está correto! O npm
- Node Package Manager, é um programa que baixa e gerencia todas os "pacotes" que seu projeto depende, no caso o Express.
Estes pacotes são softwares, alguns também escritos em Nodejs, outros apenas bibliotecas de CSS ou Javascript, que ficam disponíveis no repositório do npm
, justamente para serem baixados em projetos que usa ele como gerenciador de pacotes.
Os pacotes baixados pelo npm
ficam dentro da pasta node_modules
, então quando você executa o comando npm install
, no caso, npm install express
ele vai criar a pasta node_modules
e colocar o código do Express lá. Junto com ele vem mais um monte de outras pastas dentro da node_modules
. Estas outras pastas são dependências do Express, que precisa de outros pacotes para funcionar, e muitas destas dependências tem outras dependências para funcionar - e assim vai... Por isto que acaba ficando uma super pasta haha, mas não se preocupe, é isto mesmo.
O arquivo package-lock.json
é criado também logo após a execução do comando npm install
e é para uso do próprio npm
, nós não precisamos nos preocupar com ele ou mexer nele, apenas deixá-lo no projeto. Pois nele o npm
faz o relacionamento das dependências e suas versões baixadas.
Quando você for enviar este projeto para um sistema de versionamento (Git) ou fazer uma cópia para um pendrive. Você não precisa copiar a pasta node_modules
. Pois ela pode chegar a ter + de 50 mil arquivos, demorando muito para copiar, porém é essêncial o arquivo package.json
. Pois nele fica registrado todas as dependências do projeto. Então quando você copia um projeto sem a pasta node_modules
, depois para fazê-lo funcionar basta executar o npm install
novamente que o npm vai olhar o package.json
e remontar a pasta node_modules
.
Faça você este teste, apague a pasta node_modules
e depois execute um npm install
na pasta do seu projeto.
Bom espero ter ajudado!
Abraços e bons estudos