n
– Administre interactivamente sus versiones de Node.jsGestión de versiones de Node.js: sin subcapas, sin configuración de perfil, sin API complicada, simplemente simple .
n
– Administre interactivamente sus versiones de Node.js n
es compatible con macOS, Linux, incluido el subsistema de Windows para Linux, y varios otros sistemas similares a Unix. Está escrito como un script BASH pero no requiere que utilice BASH como shell de comandos.
n
no funciona en shells nativos de Microsoft Windows (como PowerShell), Git para Windows BASH o con Cygwin DLL.
Si ya tiene Node.js instalado, una manera fácil de instalar n
es usando npm
:
npm install -g n
La ubicación raíz predeterminada utilizada cuando se ejecuta n
es /usr/local
donde un usuario normal no tiene permiso de escritura. Es posible que se produzca el mismo tipo de error de permiso al utilizar npm para instalar módulos globales, como el comando anterior. Tienes tres opciones principales:
n
que use una ubicación personalizada donde tenga permisos de escritura (consulte N_PREFIX
).sudo
delante del comando para ejecutarlo como superusuario n
almacena en caché las versiones de Node.js en el subdirectorio n/versions
. La versión activa de Node.js se instala en los subdirectorios bin
, include
, lib
y share
.
Para tomar posesión de los directorios del sistema (opción 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
aún no está disponible, una forma de iniciar una instalación es descargar y ejecutar n
directamente. Para instalar la versión 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 no necesita soporte para actualizaciones de n
, simplemente puede guardar la descarga:
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
En macOS con Homebrew puedes instalar la fórmula n.
brew install n
O en macOS con MacPorts puedes instalar el puerto n:
port install n
En Linux y macOS, n-install permite la instalación directamente desde GitHub; por ejemplo:
curl -L https://bit.ly/n-install | bash
n-install establece PREFIX
y N_PREFIX
en $HOME/n
, instala n
en $HOME/n/bin
, modifica los archivos de inicialización de los shells compatibles para exportar N_PREFIX
y agrega $HOME/n/bin
a PATH
e instala la última versión Versión LTS Node.js.
Como resultado, tanto el propio n
como todas las versiones de Node.js que administra están alojados dentro de un único directorio opcionalmente configurable, que luego puede eliminar con el script n-uninstall
incluido. n-update
se actualiza n
sí mismo a la última versión. Consulte el repositorio de n-install para obtener más detalles.
Cambiar de un Node.js instalado anteriormente a una ubicación diferente puede implicar algunos pasos adicionales. Consulte los documentos para cambiar la ubicación del nodo para ver un ejemplo de cómo cambiar del uso de Homebrew al uso de n
para administrar Node.js.
Tienes un problema con varias versiones si después de instalar el nodo ves que las ubicaciones "instaladas" y "activas" son diferentes:
% 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
Simplemente ejecute n <version>
para descargar e instalar una versión de Node.js. Si ya se descargó <version>
, n
se instalará desde su caché.
n 10.16.0
n lts
Ejecute n
solo para ver las versiones descargadas e instale la versión seleccionada.
$ 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
(También puede usar j y k para seleccionar la versión anterior o siguiente en lugar de usar flechas o ctrl+n y ctrl+p ).
Si la versión del nodo activo no cambia después de la instalación, intente abrir un nuevo shell en caso de que vea una versión obsoleta.
Hay varias formas de especificar la versión de destino de Node.js para n
comandos. La mayoría de los comandos utilizan la última versión coincidente y n ls-remote
enumera varias versiones coincidentes.
Los números de versión numéricos pueden estar completos o incompletos, con una v
inicial opcional.
4.9.1
8
: versiones 8.xyv6.1
: versiones 6.1.xHay etiquetas para dos versiones especialmente útiles:
lts
: lanzamiento oficial más reciente de soporte a largo plazolatest
, current
: lanzamiento oficial más reciente Hay una etiqueta auto
para leer la versión de destino de un archivo en el directorio actual o de cualquier directorio principal. n
busca en orden:
.n-node-version
: versión en una sola línea. Personalizado para n
..node-version
: versión en una sola línea. Utilizado por múltiples herramientas: uso de versión de nodo.nvmrc
: versión en una sola línea. Utilizado por nvm
.engine
como se muestra a continuación. La etiqueta engine
busca un archivo package.json
y lee el campo engines
para determinar Node.js compatible. Requiere una versión instalada de jq
o node
y usa npx semver
para resolver rangos complejos.
Hay soporte para las transmisiones de lanzamiento nombradas:
argon
, boron
, carbon
: nombres en clave para los flujos de lanzamiento de LTSSe pueden utilizar estos alias de soporte de Node.js, aunque simplemente resuelva la última versión coincidente:
active
, lts_active
, lts_latest
, lts
, current
, supported
El formulario de la última versión sirve para especificar otras versiones disponibles utilizando el nombre de la carpeta de descarga remota, seguido opcionalmente de la versión completa o incompleta.
nightly
test/v11.0.0-test20180528
rc/10
Elimine algunas versiones almacenadas en caché:
n rm 0.9.4 v0.10.0
Eliminando todas las versiones almacenadas en caché excepto la versión instalada:
n prune
Elimine el Node.js instalado (no afecta las versiones en caché). Esto puede resultar útil para volver a la versión del sistema de node (si está en una ubicación diferente), o si ya no desea utilizar node y npm, o está cambiando a una forma diferente de administrarlos.
n uninstall
Hay tres comandos para trabajar directamente con las versiones descargadas de Node.js, sin reinstalar.
Puede mostrar la ruta a la versión node
descargado:
$ n which 6.14.3
/usr/local/n/versions/6.14.3/bin/node
O ejecute una versión node
descargada con el comando n run
:
n run 8.11.3 --debug some.js
O ejecute un comando con PATH
modificado para que node
y npm
sean de la versión descargada de Node.js. (NB: npm
ejecutado de esta manera utilizará node_modules globales de la carpeta de la versión del nodo de destino).
n exec 10 my-script --fast test
n exec lts zsh
Una instalación de Node.js normalmente también incluye npm
, npx
y corepack
, pero es posible que desees conservar tus versiones actuales (especialmente las más nuevas) usando --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
Puede hacer que esto sea el predeterminado configurando la variable de entorno en una cadena que no esté vacía. Hay variables de entorno independientes para npm
y corepack
:
export N_PRESERVE_NPM=1
export N_PRESERVE_COREPACK=1
Puede ser explícito para obtener el comportamiento deseado independientemente de las variables de entorno:
n --preserve nightly
n --no-preserve latest
La ayuda de la línea de comando se puede obtener en n --help
.
Lista de versiones remotas coincidentes disponibles para descargar:
n ls-remote lts
n ls-remote latest
n lsr 10
n --all lsr
Lista de versiones descargadas en caché:
n ls
Descargue la versión en caché:
n download 22
Utilice n
para acceder a las versiones en caché (ya descargadas) sin Internet disponible.
n --offline 12
Elimine la versión de caché después de la instalación usando --cleanup
. Esto es particularmente útil para una instalación de una sola vez, como en un contenedor acoplable.
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install --cleanup lts
Normalmente n run
, n exec
y n which
fallarán si la versión de destino aún no está en el caché. Puede agregar --download
para usar el caché si está disponible o descargarlo si es necesario:
n --download run 18.3 my-script.js
Muestre diagnósticos para ayudar a resolver problemas:
n doctor
Si desea utilizar un espejo de Node.js diferente que tenga el mismo diseño que el https://nodejs.org/dist/ predeterminado, puede definir N_NODE_MIRROR
.
Un ejemplo es para usuarios de China que pueden definir:
export N_NODE_MIRROR=https://npmmirror.com/mirrors/node
Otro ejemplo es el proyecto de compilaciones no oficiales de Node.js que tiene descargas para algunas plataformas que no están disponibles oficialmente, como armv6l (Raspberry Pi) y x86 de 32 bits.
export N_NODE_MIRROR=https://unofficial-builds.nodejs.org/download/release
Es posible que deba especificar la arquitectura explícitamente si n
no la detecta automáticamente, como usar musl
libc
en Alpine:
export N_NODE_MIRROR=https://unofficial-builds.nodejs.org/download/release
apk add bash curl libstdc++
n --arch x64-musl install lts
Si el espejo personalizado requiere autenticación, puede agregar el nombre de usuario y la contraseña codificados en la URL a la URL. p.ej
export N_NODE_MIRROR=https://encoded-username:encoded-password@host:port/path
También hay N_NODE_DOWNLOAD_MIRROR
para un espejo diferente con el mismo diseño que el https://nodejs.org/download predeterminado.
De forma predeterminada, n
elige los binarios que coinciden con la arquitectura de su sistema. Por ejemplo, en un sistema de 64 bits n
descargará archivos binarios de 64 bits.
En una Mac con Apple Silicon:
n
tiene como valor predeterminado los binarios arm64 que se ejecutan de forma nativan
tiene por defecto binarios x64 que se ejecutan en Rosetta 2 Puede anular la arquitectura predeterminada utilizando la opción -a
o --arch
.
por ejemplo, reinstale la última versión de Node.js con binarios x64:
n rm current
n --arch x64 current
El comando n
se descarga e instala en /usr/local
de forma predeterminada, pero puede anular esta ubicación definiendo N_PREFIX
. Para cambiar la ubicación para que diga $HOME/.n
, agregue líneas como las siguientes a su archivo de inicialización de shell:
export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH
Si desea almacenar las descargas en una ubicación diferente, utilice N_CACHE_PREFIX
. Esto no afecta dónde está instalada la versión del nodo activo.
n
utiliza de forma predeterminada archivos tar de Node.js comprimidos xz para la descarga si es probable que el sistema tar admita la descompresión xz. Puede anular la elección automática estableciendo una variable de entorno en cero o distinto de cero:
export N_USE_XZ=0 # to disable
export N_USE_XZ=1 # to enable
Puede ser explícito para obtener el comportamiento deseado cualquiera que sea la variable de entorno:
n install --use-xz nightly
n install --no-use-xz latest
En resumen:
N_NODE_MIRROR
: Ver fuente personalizadaN_NODE_DOWNLOAD_MIRROR
: Ver fuente personalizadaN_MAX_REMOTE_MATCHES
para cambiar el máximo predeterminado de ls-remote
de 20 versiones coincidentesN_PRESERVE_NPM
: consulte Preservación de npmN_PRESERVE_COREPACK
: consulte Preservación de npm n
descarga un paquete Node.js prediseñado y lo instala en un único prefijo (por ejemplo, /usr/local
). Esto sobrescribe la versión anterior. La carpeta bin
en esta ubicación debe estar en su PATH
(por ejemplo, /usr/local/bin
).
Las descargas se guardan en una carpeta de caché que se utilizará para las reinstalaciones. Las descargas también están disponibles para uso limitado usando n which
y n run
y n exec
.
La instalación no modifica los paquetes globales npm
, con la excepción del propio npm
, que forma parte de la instalación de Node.js.