Cada projeto tem sua pasta node_modules, sendo assim, você precisará instalar os plugins para cada projeto. Se você gravou todos os plugins/modulos em package.json basta rodar:
npm install
Daí ele baixará todos os módulos listados em seu arquivo, não precisa ir baixando cada plugin individual manualmente.
Agora vamos a parte "quente da sua pergunta". Preparado?
Em um primeiro momento você deve estar se fazendo essa pergunta: "Flávio, eu vou ter um monte de coisa repetida por projeto, eu queria arrumar um jeito de ter um um único lugar esses módulos e todas as minhas aplicações lerem desse lugar".
É por aí? Se for.. vamos continuar a conversa....
Bom, todo projeto possui dependências e a alteração da dependência de um projeto não deve influenciar outro. Imagine 100 aplicações e você consiga o que quer, ter as dependências em um único lugar e utilizá-las.
Daí, uma atualização de uma dependência (módulo) tem um recurso que resolveria um problemão em um dos seus projetos.
Quando você dar update nela, não é apenas aquele projeto que será influenciado, todos os outros. É isso que você deseja, certo? Mas....
Você foi pego de surpresa! Outros projetos que usavam esse módulo começaram a apresentar problemas. Esses projetos usavam um recurso do módulo que funcionava antes, mas agora quebrou por algum motivo que você desconhece. Aquela aplicação atualizada, funcionou porque não usava o recurso que está bugado. Seus projetos inteiros começam a ficar imprevisíveis... bem-vindo à "krakatoa o inferno de java" (nome de um filme).
O que o Node.js fez muito sabiamente foi deixar que cada projeto tenha suas dependências, sendo assim, qualquer alteração na dependência de um projeto não impacta em outro. Uma conseqüência disso é o uso no disco e o tempo para baixar as dependências. Aí eu te pergunto: o problema que essa abordagem resolve justifica esse uso de espaço em disco e download?
Imagine a Petrobrás com zilhões de sistemas. Imagine atualizar um módulo correndo o risco de quebrar zihões de outros projetos?
Ok, pode ser que eu não tenha te convencido, tudo bem, você não precisa ser carbono de mim, isto é, uma cópia e quer pagar pra ver porque é um cara corajoso!
Neste caso, você pode instalar dependências globais (lembra que em programação tudo que é global vem dos "infernos?").
Para isso, basta instalar a dependência com -g
. Um exemplo:
npm install usemin --save-dev -g
Eu não faço isso a tanto tempo, mas a ideia é que todos os seus projetos achem essa dependência global (acho que nem mais funciona assim.. tem que testar).
Resumindo Icaro, compartilhei minha experiência com você, agora é você ver se faz sentido. Espero ter ajudado!
No curso de Grunt eu ensino a instalar o Grunt global, depois, no curso de Gulp, eu nem mostro como instalar Global e só ensino por projeto mesmo.