Pacotes npm global ou local
A principal diferença entre pacotes locais e globais é:
- pacotes locais são instalados no diretório em que você executa
npm install <package-name>
, e eles são inseridos na pastanode_modules
desse diretório. - pacotes globais são todos colocados em único lugar do seu sistema (dependendo da sua configuração), independentemente de onde você execute
npm install -g <package-name>
No seu código você só pode importar pacotes locais:
require('package-name')
então quando instalar um ou outro?
No geral, todos os pacotes devem ser instalados localmente.
Isso garante que você possa ter dúzias de aplicações no seu computador, todas rodando com uma versão diferente de cada pacote se necessário.
Atualizar um pacote global fará com que todos seus projetos usem a nova versão, e como você pode imaginar isso pode causar pesadelos em termos de manutenção, pois alguns pacotes podem quebrar.
Todos projetos tem sua própria versão local de um pacote, mesmo que isso possa parecer um desperdício de recursos, é algo pequeno comparado as possíveis consequências.
Um pacote deve ser instalado globalmente quando ele fornece um comando executável que possa ser rodado pelo terminal (CLI), e é reutilizado entre projetos.
Você também pode instalar comandos executáveis localmente e rodá-los usando o npx, porém alguns pacotes funcionam melhor instalados de forma global.
Alguns otimos exemplos de pacotes globais populares que você pode conhecer:
npm
create-react-app
vue-cli
grunt-cli
mocha
react-native-cli
gatsby-cli
forever
nodemon
Você provavelmente já tem alguns deles instalados globalmente no seu sistema. Você pode conferir executando
npm list -g --depth 0
no seu terminal.