2
respostas

Dúvida instalação module Express

Olá pessoal,

Estou começando o curso "Node.js: Inovando com Javascript no backend", logo no início após a instalação do módulo express com o comando:

sudo npm install express -save

observei o seguinte, no vídeo a pasta "node_modules" contém apenas o subdiretório "express", no entanto no meu foram instalados vários outros módulos como se pode ver na listagem abaixo:

epansani@pansani-note ~/Dropbox/Alura/Curso NodeJs/casadocodigo/node_modules $ ls
accepts              debug        etag          inherits           mime-db      path-to-regexp  setprototypeof
array-flatten        depd         express       ipaddr.js          mime-types   proxy-addr      statuses
content-disposition  destroy      finalhandler  media-typer        ms           qs              type-is
content-type         ee-first     forwarded     merge-descriptors  negotiator   range-parser    unpipe
cookie               encodeurl    fresh         methods            on-finished  send            utils-merge
cookie-signature     escape-html  http-errors   mime               parseurl     serve-static    vary

Alguém sabe o por quê disso?

Obrigado!

2 respostas

Eder,

Quando você instala algum pacote com o npm install $modulo --save, ele é não só instalado no seu node_modules, mas também é listado no seu .json como dependência. Certo?

Se depois você perder a pasta node_modules, é só usar npm install e todos os pacotes nessa lista de dependências vão ser instalados de uma vez.

Acontece que o Express também tem dependências. Ou seja: Quando você instala ele, o npm cuida de automaticamente instalar todas as dependências que ele tem no seu node_modules, se você já não as tiver.

A pasta node_modules, Eder, serve como um repositório de dependências de uma aplicação desenvolvida em Node. Nesta pasta são listadas todas dependências diretas e as transitivas. Dependências diretas são aquelas que estão listadas de forma explícita no arquivo package.json de uma aplicação Node. Dependências transitivas são as que não estão listadas explicitamente no arquivo package.json, e que são baixadas em função de serem depedências de uma dependência direta.

No exemplo dado por você o express seria uma dependência direta, pois está listado no seu arquivo package.json. Todas as outras que não estão listadas são as transitivas. Estas foram importadas diretamente pela dependência do express ou por uma de suas dependências.

Outra coisa importante que você citou é com relação ao número de dependências listadas na pasta node_modules. Este número varia conforme a versão utilizada do Node. Na versão 4.7.0, ao executar o comando npm install --save express somente o diretório express é criado. Na versão 7.3.0, quarenta e um diretórios são criados além do diretório express, ou seja, quarenta e dois. Este número difere em função das atualizações que as bibliotecas recebem a cada nova versão do Node.