Martin Kausche

node und npm unter macOS einrichten

14 Dec 2016 - update: 04 Jan 2018

Viele aktuelle Projekte wie z.B. ionic oder Ghost bauen auf node.js auf, dessen Paketmanager ist wiederum npm.

Prinzipiell wäre alles ganz einfach mit ein paar Befehlen an brew abgehakt, wir möchten jedoch nmp-Pakete global auch ohne root-Rechte installieren lassen, daher sind ein paar Vorbereitungen notwendig (Anleitung angelehnt an diesen Ablauf.

Wir müssen npm mitteilen wo es seine Pakete installieren soll (nämlich nach ~/.npm-packages), und wir müssen unserer shell (hier beispielhaft die zsh) sagen wo diese Pakete liegen.

~ % mkdir "${HOME}/.npm-packages"
~ % echo NPM_PACKAGES="${HOME}/.npm-packages" >> ${HOME}/.zshrc
~ % echo prefix=${HOME}/.npm-packages >> ${HOME}/.npmrc
~ % echo PATH=\"\$NPM_PACKAGES/bin\:\$PATH\" >> ${HOME}/.zshrc
~ % brew install npm

Das wars auch schon, zusammen mit npm wird auch gleich node installiert. 
Zeit für einen ersten Test

~ % npm install bower -g
~ % type -a bower
bower is /Users/martin/.npm-packages/bin/bower  

So soll es sein!

verschiedene node-Versionen mittels brew verwalten

Gelegentlich kann es vorkommen, dass eine bestimmte (ältere) Version von node.js benötigt wird. 
Entweder kann man dafür nvm (Node Version Manager) nehmen - oder man macht es einfach mittels brew.

Welche Versionen sind verfügbar?

~ % brew search node
leafnode    node ✔      node@0.10   node@4      node@6 ✔    nodeenv  
llnode      node-build  node@0.12   node@5      nodebrew    nodenv  
Caskroom/cask/mindnode-pro            Caskroom/cask/nodeclipse  
Caskroom/cask/node-profiler           Caskroom/cask/printnode  
Caskroom/cask/nodebox                 Caskroom/cask/soundnode  
~ %

Aha, also 0.10, 0.12, 4, 5, 6 und die aktuellste 7.

Um eine andere als die aktuell (node aka 7.2.1) genutzte Version installieren zu können muss die aktuelle mittels brew unlink node ”entlinkt” werden, anschließend kann die ältere mittels brew install node@6installiert werden und wird sogleich zur aktuell genutzten gelinkt.

Beide Versionen sind jetzt parallel installiert, direkt genutzt werden kann immer nur die aktuell gelinkte.

~ % node -v
v6.9.2  
~ % brew unlink node@6
Unlinking /usr/local/Cellar/node@6/6.9.2... 7 symlinks removed  
~ % brew link node
Linking /usr/local/Cellar/node/7.2.1... 7 symlinks created  
~ % node -v
v7.2.1  
~ %

Ergänzung: Wenn man npm aus irgendeinem Grund sich selbst hat global updaten lassen und danach node mittels brew auf eine neuere Version updated, dann kann es passieren, dass npm (das global installierte) nicht mehr kompatibel mit der neuen node-Version ist.
Hier hilft ein beherztes:

~ % npm -g uninstall npm

Danach wird wieder die npm-Version aus dem node-Verzeichnis genutzt (diese sollten kompatibel sein).


Tags:  macOS node