2010-09-06 12 views

Antwort

29

Wenn systemweite Npm-Pakete Ihr Hauptproblem sind, dann sollten Sie vielleicht den sehr coolen Befehl 'bundle' mit npm verwenden. Dies ist näher an Frieren Edelsteine ​​oder Bundler in Schienen, anstatt rvm.

Es ist super einfach. Erstellen Sie einfach eine package.json Datei:

{ "name": "yourapp", "version": "0.0.1", "dependencies": {"jade": "0.4.1"}} 

und dann laufen:

npm bundle vendor 

oder wenn Ihre npm Version> = 1.0 laufen:

npm install 

in den Lieferantenverzeichnis einzufrieren . und dann verwenden:

require.paths.unshift('./vendor'); 
+1

npm Bündel funktioniert nicht. Nicht als Befehl erkannt – andho

+1

@andho Habe das nicht selbst getestet, aber ich verstehe, dass neuere Versionen von NPM einfach 'npm install' verwenden. –

+11

Getestet und bestätigt jetzt. 'npm install' ersetzt' npm bundle' ab NPM 1.0, glaube ich. –

17

Es gibt auch einige Node-Version-Management-Systeme, die helfen können.

Check out Nave https://github.com/isaacs/nave

NVM könnte auch ein https://github.com/creationix/nvm

Es gibt auch n https://github.com/visionmedia/n genannt Antwort

+1

Nvm funktioniert gut, wenn Sie nur verschiedene Versionen von node.js und npm gleichzeitig installiert haben möchten. Für den Rest fand ich es genug, um erforderliche Module zu haben, die mit npm im Projektverzeichnis installiert wurden. –

+1

Wenn Sie sich 'nvm' oder' n' anschauen und beim Wechseln von Verzeichnissen automatisch wechseln wollen, schauen Sie sich 'avn' an: https://github.com/wbyoung/avn – wbyoung

7

bxjx ist konzeptionell genau verwendet werden soll. Beachten Sie jedoch, dass der Befehl bundle kein Verzeichnis mehr benötigt. Es immer fällt Pakete in den Ordner node_modules, so dass npm weiß, wo sie später zu finden (und Doppelinstallationen Abhängigkeiten vermeiden können).

Jede Lösung wird wahrscheinlich beinhalten npm und Schiff „systemweite“ Installation (das heißt, in Ihrem PATH, die irgendwo in ~ sein könnte), aber dann nur Ihre spezifische Abhängigkeiten in der virtuellen Umgebung zu installieren.

Ich reagierte gründlicher on the github issue.

tl; dr: Der Anwendungsfall ist gültig und hilfreich, und während es meistens da ist, ist es nicht so gut bedient, wie es sein könnte. Wir sollten sicherstellen, dass wir darüber nachdenken und es richtig machen.

166

nodeenv - virtuelle Umgebung für node.js (Analog virtualenv)

+0

Das sah am Anfang gut aus, aber ich konnte nicht gleichzeitig mit nodeenv eine npm-Installation ausführen, wobei node.js kompiliert wurde (auf osx Lion). Wahrscheinlich hätte ich nur nvm installieren und npm für jeden Knoten einzeln installieren können ... bis ich dachte es auszuprobieren hatte ich bereits mehrere Knoten-Versionen mit anderen Mitteln. –

+2

Kann verwendet werden, um _within_ einer vorhandenen virtuellen Python-Umgebung zu installieren, sodass die 'node.js'-Umgebung zusammen mit der Python-Umgebung aktiviert wird. Siehe ['nodeenv -p'] (https://github.com/ekalinin/nodeenv). – naitsirhc

+2

nodeenv (eigentlich virtualenv + nodeenv) ist auch für Fisch-Shell-Benutzer passt seit nave und andere unterstützt keine anderen Shells als bash und zsh. – akarca

1

Sie brauchen nicht immer Abhängigkeiten verwenden können, installieren global. Normalerweise wird es empfohlen, weil Sie dann die Befehle eines npm-Pakets verwenden können, aber wenn Sie es lokal installieren (im Verzeichnis node_modules), können Sie auch diese Befehle verwenden, die nur im Verzeichnis node_modules/.bin/ enden, also müssen Sie Typ node_modules/.bin/<command>, was ärgerlich ist, aber Sie können diesen Pfad zu Ihrem PATH Umgebungsvariable natürlich hinzufügen:

export PATH=node_modules/.bin:$PATH 

Dann können Sie einfach eingeben <command> und es funktioniert!

Es gibt tatsächlich ein npm Befehl, der einen absoluten Pfad zum .bin Verzeichnis zurückgibt:

$ npm bin 
/path/to/node_modules/.bin 

Dieser Befehl funktioniert auch, wenn Sie in einem Unterverzeichnis des Projekts sind, dann wird es das erste node_modules/.bin Verzeichnis zurückkehren es findet in seinen Elternverzeichnissen.

Sie können diesen Alias ​​in Ihrem .bashrc fügen automatisch die .bin/ Verzeichnis zu Ihrem PATH hinzuzufügen:

alias nodebin='export PATH=$(npm bin):$PATH' 

Also, wenn Sie in einem Verzeichnis eines Projekts sind, das ein node_modules/ Verzeichnis in der Wurzel hat, Sie kann nodebin eingeben und dann können Sie alle Befehle verwenden, die sich in dem Verzeichnis .bin/ befinden!

0

Ich denke, es macht überhaupt keinen Sinn, auf Knoten-Umgebung ohne einen installierten Knoten zu arbeiten. Es ist so, als hättest du Python und Pip nicht installiert, wenn du an einem Python-Projekt arbeiten willst! natürlich für die Verwendung von virtualenv und virtualenvwrapper ist das Pre-Require Python.
Wenn Sie an einem Node-Projekt arbeiten möchten, ist es normal, mindestens Knoten und Npm zu installieren.
Wenn Sie nur ein Python-Projekt im Web ausführen möchten (zum Beispiel mit Django), können Sie die Build-Version der Javascript-Datei verwenden und diese Datei in Ihr Projekt laden.

Verwandte Themen