2013-06-03 2 views
11

Ich habe Node.js und Npm für ein paar Wochen mit großem Erfolg verwendet und habe begonnen, die Best Practice für die Installation lokaler Module in Frage zu stellen. Ich verstehe die Global vs Local argument, aber meine Frage hat mehr mit wo eine lokale Installation zu platzieren. Nehmen wir an, ich habe ein Projekt unter ~/ProjectA/, das versionskontrolliert ist und von mehreren Entwicklern bearbeitet wurde. Bei der ersten Wiedergabe mit Node.js und npm waren mir die standardmäßigen lokalen Installationspfade nicht bekannt, und ich habe lediglich die erforderlichen Module in einem Standard-Terminal installiert, was zu einem Installationspfad von ~/node_modules führte. In diesem Fall müssen alle anderen Entwickler, die an dem Projekt arbeiten, die Module auf ihren eigenen Maschinen installieren, um die Anwendung auszuführen. Nachdem ich gesehen habe, wo einige der Entwickler rannten npm install Ich bin immer noch wirklich überrascht, dass es auf ihren Maschinen überhaupt funktioniert (ich denke, es bezieht sich auf how Node.js and require() looks for modules), aber es ist unnötig zu sagen, es hat funktioniert.Ich verstehe Npm und Node.js Installationsort für Module

Jetzt, da das Projekt die Phase "herumspielen" übersteht, möchte ich den Projektordner korrekt einrichten. Meine Frage ist also, ob die Module unter ~/ProjectA/node_modules installiert werden und somit Teil der versionsgesteuerten Projektdateien sein sollen, oder ob sie sich weiterhin an einem für Entwickler bestimmten Standort befinden ... oder spielt es überhaupt keine Rolle?

Ich bin nur auf der Suche nach ein wenig "Best-Practice" Anleitung auf diesem und was andere tun, wenn Sie Ihre Projekte einrichten.

+0

Lesen Sie https://npmjs.org/doc/developers.html. Hat Ihre App eine 'package.json'? –

Antwort

9

Ich denke, dass die "beste Vorgehensweise" hier ist, die Abhängigkeiten innerhalb des Projektordners zu behalten.
Fast alle Node-Projekte, die ich bisher gesehen habe (ich bin ein Node-Entwickler seit ungefähr 8 Monaten), tun das.

Sie müssen die Abhängigkeiten nicht versionskontrollieren. Das ist, wie ich meine Knoten Projekte verwalten:

  1. Halten Sie die gesperrten Versionen in der package.json Datei, so bekommt jeder die gleiche Arbeitsversion, oder verwenden Sie den Befehl npm shrinkwrap in Ihrem Projekt Wurzel.
  2. Fügen Sie den node_modules Ordner auf Ihrem VCS ignorieren Datei (ich benutze git, so ist mein .gitignore)
  3. Seien Sie glücklich, sind Sie fertig!
+6

Um sicherzustellen, dass jeder genau die gleichen Versionen der Abhängigkeiten hat, sollten Sie 'npm shrinkwrap' verwenden https://npmjs.org/doc/shrinkwrap.html –

+0

Der Antwort hinzugefügt, danke – gustavohenke

+1

So klingt es wie ich bin auf der richtiger Weg. Es schien logisch, die '' node_modules'' von der Versionskontrolle einfach auszuschließen, aber mir war nicht klar, wie ich dann die Pakete aller Teilnehmer verwalten sollte. Es sieht so aus als wäre es durch die '' package.json'' Datei oder '' npm shrinkwrap'' Befehl und das war der fehlende Link. Danke für die Hilfe! – Sanuden