Files
fn_registry/bash/functions/infra/install_nodejs.sh
T
egutierrez 194663a379 feat: add bash infra installer and diagnostic functions
10 funciones Bash del dominio infra: instaladores de herramientas de desarrollo
(install_go, install_nodejs, install_pnpm, install_python312, install_uv,
install_volta, install_wails), diagnostico del sistema (analyze_disk_space,
detect_wsl, list_listening_ports). Automatizan la configuracion del entorno
de desarrollo en Linux/WSL.
2026-04-12 13:54:21 +02:00

76 lines
2.3 KiB
Bash

#!/usr/bin/env bash
# install_nodejs
# --------------
# Instala Node.js en Linux usando nvm (Node Version Manager).
# Instala nvm si no está presente, luego instala la versión de Node indicada
# y la configura como default.
#
# USO:
# source install_nodejs.sh
# install_nodejs [version]
#
# ARGUMENTOS:
# version Versión principal de Node.js (default: 20)
install_nodejs() {
local node_version="${1:-20}"
echo "Instalando Node.js v${node_version} mediante nvm..."
echo ""
# Informar si Node ya está instalado
if command -v node &>/dev/null; then
local current_version
current_version="$(node --version)"
echo "Node.js ya está instalado: ${current_version}"
echo "Continuando con la instalación/actualización..."
fi
# Instalar nvm si no está presente
if [[ -d "$HOME/.nvm" ]]; then
echo "nvm ya está instalado."
export NVM_DIR="$HOME/.nvm"
# shellcheck disable=SC1091
[[ -s "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh"
else
echo "Descargando e instalando nvm..."
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$HOME/.nvm"
# shellcheck disable=SC1091
[[ -s "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh"
echo "nvm instalado correctamente."
fi
# Verificar que nvm esté disponible
if ! command -v nvm &>/dev/null; then
echo "install_nodejs: nvm no está disponible después de la instalación" >&2
echo " Ejecuta: source ~/.bashrc (o abre una nueva terminal)" >&2
return 1
fi
echo ""
echo "Instalando Node.js v${node_version}..."
nvm install "$node_version"
nvm use "$node_version"
nvm alias default "$node_version"
local installed_node
local installed_npm
installed_node="$(node --version)"
installed_npm="$(npm --version)"
echo ""
echo "Node.js instalado correctamente:"
echo " Node.js: ${installed_node}"
echo " npm: ${installed_npm}"
echo ""
echo "Si es una instalación nueva, reinicia tu terminal o ejecuta:"
echo " source ~/.bashrc # o ~/.zshrc según tu shell"
}
# Ejecutar si se invoca directamente
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
install_nodejs "$@"
fi