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