2012-11-19 10 views
16

Sto costruendo un grugnito javascript progetto con grugnito, e ho un file di package.json che sembra qualcosa di simile:js grugnito d'installazione dei pacchetti

{ 
    ... name, author, etc here ... 

    "dependencies": { 
     "grunt-html":"0.2.1" 
    } 

} 

posso correre npm install installare grugnito-html e questo funziona va bene. Ma quando aggiungo nuove dipendenze, tutti gli sviluppatori del team devono sapere di eseguire di nuovo npm install. C'è un modo per installare automaticamente tutti i pacchetti che non sono ancora stati installati? Dovrei semplicemente eseguire l'installazione di npm sempre per assicurarmi di essere aggiornato?

risposta

26

npm install è il modo più semplice IMO. Avere familiarità con gli altri comandi npm rende la gestione dei deps più facile. Ad esempio:

  • npm ls per elencare i moduli attualmente installati.
  • Oppure il flag --save, ovvero npm install grunt-html --save per installare e inserire il pacchetto e la versione nel proprio package.json.
  • npm prune per rimuovere moduli non inclusi nel package.json.

altri modi per gestire le dipendenze sono a commettere la cartella node_modules nel repository per evitare altri sviluppatori dal dover correre npm install. O per progetti più complessi, considera l'utilizzo di npm shrinkwrap per bloccare dipendenze a versioni specifiche: npm shrinkwrap docs.

+0

Sembra che potrebbe essere una buona idea impegnare node_modules proprio per questo motivo. Cosa ne pensi? –

+0

Uso uno dei tre metodi a seconda del progetto. Per lo più 'npm install', visto che sono in una piccola squadra. Il commit di 'node_modules' è un buon risultato se non si mantengono le schede di chiusura sui dep che potrebbero aiutare a prevenire un sito non funzionante sulla distribuzione. Ogni metodo ha i suoi pro/contro in base al progetto. –

+0

Esiste un modo per "salvare" sui pacchetti 'package.json' già installati (se non è stato eseguito' npm install' con il flag '--save' prima)? –

1

Non ho provato grunt-install-dependencies (https://github.com/ahutchings/grunt-install-dependencies), ma sembra che questo potrebbe soddisfare le vostre esigenze. È sufficiente aggiungere il comando install-dependencies come prima attività all'interno dei propri comandi personalizzati, ad es.

grunt.registerTask ('build', ['install-dependencies', 'useminPrepare', ...]);

+0

Si può anche guardare https://github.com/iclanzan/grunt-npm-install – Tvaroh

Problemi correlati