Install Node.js

Download the current node release from https://nodejs.org

Use multiple Node versions

With the npm package n it’s possible to install multiple versions of node and use a project specific one. (Note: see next section in case of permission issues!)

npm i n -g

Fixing folder permission on MacOS

Starting with MacOS High Sierra, brew will not update the ownership for /usr/local anymore, which leads to the issue, that n is not able to install alternative versions. To fix this, add a new folder and change it’s permissions1:

sudo chown -R $(whoami) ~/.npm
sudo chown -R $(whoami) /usr/local/lib/node_modules

# make n cache folder (if missing) and take ownership
sudo mkdir -p /usr/local/n
sudo chown -R $(whoami) /usr/local/n
# take ownership of node install destination folders
sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share

Um die Version nicht von Hand umschalten zu müssen kann ein zusätzliches Package verwendet werden. avn lässt sich zwar einfacher installieren, benötigt aber in der Verwendung eine zusätzliche Konfigurations-Datei. Mit dem Package nodengine benötigt keine zusätzliche Datei, sondern liesst die gewünschte Version aus dem package.json aus.

npm i nodengine -g

Im Gegensatz zu avn muss bei nodengine der Befehl zum Umschalten der Version leider noch selbst getriggert werden. Über ein Bash-Script kann das Verhalten aber automatisiert werden.

# Enable nodengine autoswitching
function callNodengine {
  FILE=$PWD/package.json
  BLUE='\033[0;34m'
  NC='\033[0m' # No Color

  if [ -f $FILE ];
  then
     nodengine
     printf "${BLUE}Switched Node.js version to${NC} "
     node --version
  fi
}

cd () { builtin cd "$@" && chpwd; }
pushd () { builtin pushd "$@" && chpwd; }
popd () { builtin popd "$@" && chpwd; }
chpwd () {
  callNodengine
}

callNodengine

Node.js initialisieren

Auf den einzelnen Projekten muss Node.js initialisiert werden. Dies geschieht über einen einfachen Befehl, der die nötige package.json anlegt.

npm init

npm-Pakete installieren

Pakete können global oder projektspezifisch installiert werden.

# Add project package and save use to package.json
$ npm i <package> [--save|--save-dev]

# Add global package
$ npm i <package> -g

Globale Node-Pakete listen

Der folgende Befehl listet alle globalen Node-Pakete ohne Abhängigkeiten

$ npm list -g --depth=0

Remove Node

If your Node installation should become corrupted you can use the following commands to remove the current installation. Repeat the install process afterwards:

rm -rf /usr/local/lib/node_modules
rm -rf /usr/local/bin/node
rm -rf /usr/local/bin/npm
rm -rf /usr/local/n
  1. https://github.com/tj/n/issues/416#issuecomment-342693217 []

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht.