81 lines
2.3 KiB
Bash
81 lines
2.3 KiB
Bash
#!/bin/bash
|
|
set -eu
|
|
|
|
# 🛠 Actualizar repositorios
|
|
echo "Actualizando repositorios..."
|
|
apt-get update
|
|
|
|
# 🛠 Instalar Node.js, NPM, y dependencias necesarias si no están instalados
|
|
echo "Instalando Node.js, NPM y dependencias necesarias..."
|
|
apt-get install -y curl python3 make g++ git libc-dev bash
|
|
|
|
# 🛠 Instalar n (gestor de versiones de Node.js) globalmente
|
|
echo "Instalando el gestor de versiones 'n' para Node.js..."
|
|
curl -L https://raw.githubusercontent.com/tj/n/master/bin/n -o /usr/local/bin/n
|
|
chmod +x /usr/local/bin/n
|
|
|
|
# 🛠 Eliminar versiones conflictivas de Node.js y NPM
|
|
echo "Eliminando binarios conflictivos..."
|
|
rm -f /usr/local/bin/node || true
|
|
rm -f /usr/local/bin/npm || true
|
|
rm -f /usr/local/bin/npx || true
|
|
|
|
# 🛠 Crear directorio para versiones globales de Node.js si no existe
|
|
mkdir -p /usr/local/n
|
|
chown -R $(whoami) /usr/local/n
|
|
export N_PREFIX=/usr/local/n
|
|
|
|
# 🛠 Agregar N_PREFIX al PATH si no está
|
|
if ! grep -q "/usr/local/n/bin" <<< "$PATH"; then
|
|
export PATH="/usr/local/n/bin:$PATH"
|
|
echo 'export PATH="/usr/local/n/bin:$PATH"' >> ~/.bashrc
|
|
source ~/.bashrc
|
|
fi
|
|
|
|
# 🛠 Función para configurar la versión de Node.js
|
|
setup_node_version() {
|
|
local VERSION=$1
|
|
echo "Instalando Node.js v$VERSION..."
|
|
n $VERSION
|
|
|
|
# 🛠 Crear enlaces simbólicos globales
|
|
ln -sf /usr/local/n/bin/node /usr/local/bin/node
|
|
ln -sf /usr/local/n/bin/npm /usr/local/bin/npm
|
|
ln -sf /usr/local/n/bin/npx /usr/local/bin/npx
|
|
|
|
# 🛠 Actualizar el PATH y limpiar caché de comandos
|
|
export PATH="/usr/local/n/bin:$PATH"
|
|
hash -r
|
|
|
|
# 🛠 Mostrar la versión instalada
|
|
echo "Node.js actualizado a:"
|
|
node -v
|
|
npm -v
|
|
}
|
|
|
|
# 🛠 Preguntar al usuario qué versión quiere instalar
|
|
echo "¿Qué versión de Node.js deseas instalar? (Ejemplo: 20)"
|
|
read -r NODE_VERSION
|
|
|
|
# 🛠 Ejecutar la instalación de la versión solicitada
|
|
setup_node_version $NODE_VERSION
|
|
|
|
# 🛠 Instrucciones para cambiar de versión rápidamente
|
|
cat << EOF
|
|
|
|
¡Node.js v$NODE_VERSION instalado correctamente! 🎉
|
|
|
|
Para cambiar de versión en el futuro, usa:
|
|
n <versión> # Ejemplo: n 18
|
|
|
|
Para listar versiones disponibles:
|
|
n ls-remote
|
|
|
|
Para listar versiones instaladas localmente:
|
|
n ls
|
|
|
|
Para borrar una versión específica:
|
|
n rm <versión> # Ejemplo: n rm 18
|
|
|
|
¡Disfruta usando Node.js con n! 🚀
|
|
EOF |