#!/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