n
– Gérez de manière interactive vos versions Node.jsGestion des versions Node.js : pas de sous-shell, pas de configuration de profil, pas d'API alambiquée, tout simplement .
n
– Gérez de manière interactive vos versions Node.js n
est pris en charge sur macOS, Linux, y compris avec le sous-système Windows pour Linux, et divers autres systèmes de type Unix. Il est écrit sous forme de script BASH mais ne nécessite pas que vous utilisiez BASH comme shell de commande.
n
ne fonctionne pas dans les shells natifs sous Microsoft Windows (comme PowerShell), ou Git pour Windows BASH, ou avec la DLL Cygwin.
Si Node.js est déjà installé, un moyen simple d'installer n
consiste à utiliser npm
:
npm install -g n
L'emplacement racine par défaut utilisé lors de l'exécution n
est /usr/local
où un utilisateur normal n'a pas d'autorisation d'écriture. Vous pouvez rencontrer le même type d'erreur d'autorisation lorsque vous utilisez npm pour installer des modules globaux, comme la commande ci-dessus. Vous avez trois options principales :
n
d'utiliser un emplacement personnalisé où vous disposez d'autorisations d'écriture (voir N_PREFIX
)sudo
devant la commande pour l'exécuter en tant que super utilisateur n
met en cache les versions de Node.js dans le sous-répertoire n/versions
. La version active de Node.js est installée dans les sous-répertoires bin
, include
, lib
et share
.
Pour devenir propriétaire des répertoires système (option 1) :
# make cache folder (if missing) and take ownership
sudo mkdir -p /usr/local/n
sudo chown -R $(whoami) /usr/local/n
# make sure the required folders exist (safe to execute even if they already exist)
sudo mkdir -p /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
# take ownership of Node.js install destination folders
sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
Si npm
n'est pas encore disponible, une façon de démarrer une installation consiste à télécharger et à exécuter n
directement. Pour installer la version lts
de Node.js :
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install lts
# If you want n installed, you can use npm now.
npm install -g n
Si vous n'avez pas besoin d'assistance pour les mises à jour de n
lui-même, vous pouvez simplement enregistrer le téléchargement :
curl -fsSL -o /usr/local/bin/n https://raw.githubusercontent.com/tj/n/master/bin/n
chmod 0755 /usr/local/bin/n
n install lts
Sur macOS avec Homebrew vous pouvez installer la formule n.
brew install n
Ou sur macOS avec MacPorts vous pouvez installer le port n :
port install n
Sous Linux et macOS, n-install permet l'installation directement depuis GitHub ; par exemple:
curl -L https://bit.ly/n-install | bash
n-install définit à la fois PREFIX
et N_PREFIX
sur $HOME/n
, installe n
sur $HOME/n/bin
, modifie les fichiers d'initialisation des shells pris en charge pour exporter N_PREFIX
et ajoute $HOME/n/bin
au PATH
et installe la dernière version. Version LTS Node.js.
En conséquence, n
lui-même et toutes les versions de Node.js qu'il gère sont hébergés dans un répertoire unique, éventuellement configurable, que vous pourrez ensuite supprimer avec le script n-uninstall
inclus. n-update
met à jour n
lui-même vers la dernière version. Voir le dépôt n-install pour plus de détails.
Le passage d'un Node.js précédent installé à un emplacement différent peut impliquer quelques étapes supplémentaires. Consultez la documentation sur la modification de l'emplacement du nœud pour un exemple pas à pas de passage de l'utilisation de Homebrew à l'utilisation n
pour gérer Node.js.
Vous rencontrez un problème avec plusieurs versions si, après l'installation du nœud, vous voyez que les emplacements « installé » et « actif » sont différents :
% n lts
copying : node/20.12.2
installed : v20.12.2 to /usr/local/bin/node
active : v21.7.3 at /opt/homebrew/bin/node
Exécutez simplement n <version>
pour télécharger et installer une version de Node.js. Si <version>
a déjà été téléchargée, n
s'installera à partir de son cache.
n 10.16.0
n lts
Exécutez n
seul pour afficher vos versions téléchargées et installez la version sélectionnée.
$ n
node/4.9.1
ο node/8.11.3
node/10.15.0
Use up/down arrow keys to select a version, return key to install, d to delete, q to quit
(Vous pouvez également utiliser j et k pour sélectionner la version suivante ou précédente au lieu d'utiliser les flèches, ou ctrl+n et ctrl+p .)
Si la version du nœud actif ne change pas après l'installation, essayez d'ouvrir un nouveau shell au cas où vous verriez une version obsolète.
Il existe différentes manières de spécifier la version cible de Node.js pour n
commandes. La plupart des commandes utilisent la dernière version correspondante et n ls-remote
répertorie plusieurs versions correspondantes.
Les numéros de version numériques peuvent être complets ou incomplets, avec un v
facultatif en tête.
4.9.1
8
: versions 8.xyv6.1
: versions 6.1.xIl existe des étiquettes pour deux versions particulièrement utiles :
lts
: dernière version officielle du support à long termelatest
, current
: dernière version officielle Il existe une étiquette auto
pour lire la version cible à partir d'un fichier dans le répertoire actuel ou dans n'importe quel répertoire parent. n
recherche dans l'ordre :
.n-node-version
: version sur une seule ligne. Personnalisé à n
..node-version
: version sur une seule ligne. Utilisé par plusieurs outils : node-version-usage.nvmrc
: version sur une seule ligne. Utilisé par nvm
.engine
comme ci-dessous. L'étiquette engine
recherche un fichier package.json
et lit le champ engines
pour déterminer les Node.js compatibles. Nécessite une version installée de jq
ou node
et utilise npx semver
pour résoudre des plages complexes.
Les flux de versions nommés sont pris en charge :
argon
, boron
, carbon
: noms de code pour les flux de libération LTSCes alias de support Node.js peuvent être utilisés, bien qu'ils soient simplement résolus vers la dernière version correspondante :
active
, lts_active
, lts_latest
, lts
, current
, supported
Le formulaire de dernière version permet de spécifier les autres versions disponibles en utilisant le nom du dossier de téléchargement distant éventuellement suivi de la version complète ou incomplète.
nightly
test/v11.0.0-test20180528
rc/10
Supprimez certaines versions mises en cache :
n rm 0.9.4 v0.10.0
Suppression de toutes les versions mises en cache à l'exception de la version installée :
n prune
Supprimez le Node.js installé (n'affecte pas les versions mises en cache). Cela peut être utile pour revenir à la version système de node (si vous vous trouvez à un emplacement différent), ou si vous ne souhaitez plus utiliser node et npm, ou si vous passez à une autre manière de les gérer.
n uninstall
Il existe trois commandes pour travailler directement avec vos versions téléchargées de Node.js, sans réinstallation.
Vous pouvez afficher le chemin d'accès à la version node
téléchargé :
$ n which 6.14.3
/usr/local/n/versions/6.14.3/bin/node
Ou exécutez une version node
téléchargée avec la commande n run
:
n run 8.11.3 --debug some.js
Ou exécutez une commande avec PATH
modifié afin que node
et npm
proviennent de la version Node.js téléchargée. (NB : npm
exécuté de cette façon utilisera les node_modules globaux du dossier de version du nœud cible.)
n exec 10 my-script --fast test
n exec lts zsh
Une installation Node.js inclut normalement également npm
, npx
et corepack
, mais vous souhaiterez peut-être conserver vos versions actuelles (en particulier les plus récentes) en utilisant --preserve
:
$ npm install -g npm@latest
...
$ npm --version
6.13.7
# Node.js 8.17.0 includes (older) npm 6.13.4
$ n -p 8
installed : v8.17.0
$ npm --version
6.13.7
Vous pouvez en faire la valeur par défaut en définissant la variable d'environnement sur une chaîne non vide. Il existe des variables d'environnement distinctes pour npm
et corepack
:
export N_PRESERVE_NPM=1
export N_PRESERVE_COREPACK=1
Vous pouvez être explicite pour obtenir le comportement souhaité quelles que soient les variables d'environnement :
n --preserve nightly
n --no-preserve latest
L'aide en ligne de commande peut être obtenue à partir de n --help
.
Liste des versions distantes correspondantes disponibles en téléchargement :
n ls-remote lts
n ls-remote latest
n lsr 10
n --all lsr
Répertoriez les versions téléchargées dans le cache :
n ls
Télécharger la version dans le cache :
n download 22
Utilisez n
pour accéder aux versions mises en cache (déjà téléchargées) sans Internet disponible.
n --offline 12
Supprimez la version du cache après l'installation à l'aide de --cleanup
. Ceci est particulièrement utile pour une installation ponctuelle, comme dans un conteneur Docker.
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install --cleanup lts
Normalement n run
, n exec
et n which
échoueront si la version cible n'est pas déjà dans le cache. Vous pouvez ajouter --download
pour utiliser le cache s'il est disponible ou télécharger si nécessaire :
n --download run 18.3 my-script.js
Afficher les diagnostics pour aider à résoudre les problèmes :
n doctor
Si vous souhaitez utiliser un autre miroir Node.js qui a la même présentation que le https://nodejs.org/dist/ par défaut, vous pouvez définir N_NODE_MIRROR
.
Un exemple concerne les utilisateurs en Chine qui peuvent définir :
export N_NODE_MIRROR=https://npmmirror.com/mirrors/node
Un autre exemple est le projet de construction non officielle Node.js qui propose des téléchargements pour certaines plates-formes non officiellement disponibles, telles que armv6l (Raspberry Pi) et 32 bits x86.
export N_NODE_MIRROR=https://unofficial-builds.nodejs.org/download/release
Vous devrez peut-être spécifier explicitement l'architecture si elle n'est pas détectée automatiquement par n
, par exemple en utilisant musl
libc
sur Alpine :
export N_NODE_MIRROR=https://unofficial-builds.nodejs.org/download/release
apk add bash curl libstdc++
n --arch x64-musl install lts
Si le miroir personnalisé nécessite une authentification, vous pouvez ajouter le nom d'utilisateur et le mot de passe codés en URL dans l'URL. par exemple
export N_NODE_MIRROR=https://encoded-username:encoded-password@host:port/path
Il existe également N_NODE_DOWNLOAD_MIRROR
pour un miroir différent avec la même disposition que celle par défaut https://nodejs.org/download.
Par défaut, n
sélectionne les binaires correspondant à l'architecture de votre système. Par exemple, sur un système 64 bits n
téléchargera les binaires 64 bits.
Sur un Mac équipé d'une puce Apple :
n
est par défaut les binaires arm64 qui s'exécutent nativementn
est par défaut les binaires x64 qui s'exécutent dans Rosetta 2 Vous pouvez remplacer l'architecture par défaut en utilisant l'option -a
ou --arch
.
par exemple, réinstallez la dernière version de Node.js avec les binaires x64 :
n rm current
n --arch x64 current
La commande n
télécharge et installe par défaut dans /usr/local
, mais vous pouvez remplacer cet emplacement en définissant N_PREFIX
. Pour modifier l'emplacement pour indiquer $HOME/.n
, ajoutez des lignes comme celles-ci à votre fichier d'initialisation shell :
export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH
Si vous souhaitez stocker les téléchargements sous un emplacement différent, utilisez N_CACHE_PREFIX
. Cela n'affecte pas l'emplacement d'installation de la version du nœud actif.
n
utilise par défaut les archives tar Node.js compressées xz pour le téléchargement s'il est probable que tar sur le système prend en charge la décompression xz. Vous pouvez remplacer le choix automatique en définissant une variable d'environnement sur zéro ou non :
export N_USE_XZ=0 # to disable
export N_USE_XZ=1 # to enable
Vous pouvez être explicite pour obtenir le comportement souhaité quelle que soit la variable d'environnement :
n install --use-xz nightly
n install --no-use-xz latest
Bref:
N_NODE_MIRROR
: Voir Source personnaliséeN_NODE_DOWNLOAD_MIRROR
: Voir Source personnaliséeN_MAX_REMOTE_MATCHES
pour modifier le maximum par défaut ls-remote
de 20 versions correspondantesN_PRESERVE_NPM
: Voir Préserver npmN_PRESERVE_COREPACK
: Voir Préserver npm n
télécharge un package Node.js prédéfini et l'installe sur un seul préfixe (par exemple /usr/local
). Cela écrase la version précédente. Le dossier bin
à cet emplacement doit être dans votre PATH
(par exemple /usr/local/bin
).
Les téléchargements sont conservés dans un dossier cache pour être utilisés pour les réinstallations. Les téléchargements sont également disponibles pour une utilisation limitée en utilisant n which
et n run
et n exec
.
Les packages npm
globaux ne sont pas modifiés par l'installation, à l'exception de npm
lui-même qui fait partie de l'installation de Node.js.