2015-01-07 8 views
8

Capisco le differenze tra npm install something e npm install something --save (per chi si chiede, il primo installerà la dipendenza solo mentre quest'ultimo installerà la dipendenza e lo aggiungerà al pacchetto .json).installazione npm --save, a cosa serve non salvare

Tuttavia non capisco perché ci sia un'opzione --save in primo luogo. In altre parole, perché dovresti voler installare una dipendenza senza aggiungendola al tuo file package.json? Perché l'opzione --save non è predefinita?

Molti siti Web/moduli npm/SaaS suggeriscono di installare il modulo utilizzando npm install something (newrelic è uno di questi ad esempio), mi manca qualcosa?

Modifica: Starting from NPM 5, --save è ora attivo per impostazione predefinita.

+0

Se si sta installando alcuni strumenti di debug, ad esempio 'nodemon', non lo si vorrebbe nel pacchetto.json – surajck

risposta

9
  1. si avrebbe uno scenario così come è necessario qualche modulo da installare senza l'aggiunta di dipendenza package.json file, ad es. vuoi solo provare qualche modulo, e non sei sicuro che useresti quel modulo in produzione o durante la distribuzione, quindi aggiungi la dipendenza del modulo a package.json, provalo senza usare --save. questo è il motivo per cui npm install senza --save esiste.

  2. Ma per la maggior parte dei moduli è possibile utilizzare --save, ad es. npm install express --save, in questo caso si sa sicuramente che si utilizzerà Express per l'applicazione.

  3. L'altro scenario, per non usare --save, sarebbe, npm install heapdump o npm install nodemon, io lo uso per testare la mia performance applicazioni, ma non aggiungere una dipendenza nel package.json :)

  4. Inoltre, Come ha detto @surajck nel commento seguente: quando si eseguono installazioni globali, in tal caso l'aggiunta di dipendenze utilizzando --save, allo package.json non avrebbe senso.

+2

Non sarebbe più facile/usare sempre' --save' ed eseguire [depcheck ] (https://www.npmjs.com/package/depcheck) prima di eseguire il commit/distribuire? – Nepoxx

+0

bene, come dice la pagina depcheck su npm, ** Ma anche questo è un problema. ** –

+1

@Nepoxx e quando si eseguono installazioni globali, in quel caso l'aggiunta al pacchetto. Json non avrebbe senso. – surajck

8

Ho appena imparato un bel trucco da Jonathan Mills' JavaScript Best Practices corso di Pluralsight. Dal terminale:
npm config set save=true
Ora non ho più bisogno di ricordare --save. E ora utilizzo anche
npm config set save-exact=true
Perché voglio la versione esatta del pacchetto non il prefisso ^.