1
resposta

[Dúvida] Instalação do Cli Nestjs global

Prezados,

Tudo bem com vocês? espero que sim!

Não entendi o motivo de o CLI do nest ser instalado globalmente, não seria melhor instalar como dependencia de desenvolvimento?

Grato,

1 resposta

Olá, Wesley. Como vai?

Essa é uma excelente dúvida técnica e toca em um ponto fundamental sobre a arquitetura de ferramentas no ecossistema Node.js. A escolha entre instalação global ou como dependência de desenvolvimento (devDependencies) depende de como você pretende interagir com o framework.

Vou te explicar os motivos principais para o uso do CLI global e as alternativas modernas que utilizamos hoje:

O papel do CLI Global
O NestJS CLI instalado globalmente (npm install -g @nestjs/cli) funciona como um "gerador de projetos". Ele expõe o comando nest diretamente no seu terminal, permitindo que você crie novos projetos do zero com um simples nest new nome-do-projeto. Como o projeto ainda não existe, você precisa de uma ferramenta externa ao diretório para construí-lo.

Além disso, ele facilita a criação de arquivos seguindo o padrão do framework (Boilerplate). Com o CLI global, você pode usar comandos como:

  • nest generate module usuarios
  • nest generate controller usuarios

Por que instalar como Dependência de Desenvolvimento?
Você está correto em pensar que instalar localmente é uma boa prática. Quando o CLI está nas devDependencies, garantimos que todos os desenvolvedores do projeto usem a mesma versão do NestJS, evitando o famoso problema do "na minha máquina funciona".

A Alternativa Moderna: npx
Atualmente, muitos desenvolvedores preferem não instalar nada globalmente para manter o sistema "limpo". Para isso, utilizamos o npx, que executa pacotes sem a necessidade de instalação permanente:

npx @nestjs/cli new meu-projeto

Uma vez que o projeto foi criado, o NestJS automaticamente adiciona o @nestjs/cli nas suas devDependencies dentro do arquivo package.json. A partir daí, você pode rodar os comandos de geração usando o npx nest generate... ou criando scripts no package.json.

Resumo da Recomendação:

  • Global: Útil para quem cria muitos projetos novos e quer agilidade no terminal.
  • Local (devDependencies): Essencial para padronizar a versão entre o time e em ambientes de CI/CD.

O uso global ensinado no início dos cursos serve para facilitar a primeira barreira de entrada, mas no dia a dia profissional, focar na dependência local é, de fato, uma prática mais resiliente.

Espero que possa ter lhe ajudado!