Files
Desarrollo_docker/share/utils/node-manager.sh
T

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