A principal diferença entre pacotes locais e globais é esta:
- os pacotes locais são instalados no diretório onde você executa
npm install <package-name>
, e eles são colocados na pastanode_modules
sob este diretório - os pacotes globais são todos colocados em um único lugar no seu sistema (exatamente onde depende da sua configuração), independentemente de onde você executa
npm install -g <package-name>
No seu código você só pode requerer pacotes locais:
require('package-name')
Então quando você deve instalar de uma maneira ou de outra?
Em geral, todos os pacotes devem ser instalados localmente.
Isso garante que você possa ter dezenas de aplicativos em seu computador, todos rodando uma versão diferente de cada pacote se necessário.
Atualizar um pacote global faria com que todos os seus projetos usassem a nova versão, e como você pode imaginar isso pode causar pesadelos em termos de manutenção, pois alguns pacotes podem quebrar a compatibilidade com outras dependências, e assim por diante.
Todos os projetos têm sua própria versão local de um pacote, mesmo que isso possa parecer um desperdício de recursos, é mínimo comparado com as possíveis consequências negativas.
Um pacote deve ser instalado globalmente quando ele fornece um comando executável que você executa a partir da shell (CLI), e ele é reutilizado através dos projetos.
Você também pode instalar comandos executáveis localmente e executá-los usando o npx, mas alguns pacotes são apenas melhor instalados globalmente.
Grandes exemplos de pacotes globais populares que você deve saber são
npm
create-react-app
vue-cli
grunt-cli
mocha
react-native-cli
gatsby-cli
forever
nodemon
Você provavelmente já tem alguns pacotes instalados globalmente no seu sistema. Você pode vê-los executando
npm list -g --depth 0
na sua linha de comando.