#!/bin/bash # 导入公共函数 source "$(dirname "$0")/../utils/common.sh" # 安装nvm install_nvm() { log_info "安装nvm..." # 清理现有的npm配置 if [ -f "${USER_HOME}/.npmrc" ]; then log_info "备份并删除现有的 .npmrc 文件" manage_config "backup" "${USER_HOME}/.npmrc" rm -f "${USER_HOME}/.npmrc" fi # 卸载全局npm包 if command -v npm &> /dev/null; then log_info "卸载全局npm包" npm uninstall -g @typescript-eslint/eslint-plugin @typescript-eslint/parser corepack eslint lua-format neovim prettier typescript-language-server typescript fi # 切换到用户目录 cd "${USER_HOME}" # 以用户身份下载并安装nvm su - $CURRENT_USER << EOF curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 设置环境变量 export NVM_DIR="\$HOME/.nvm" [ -s "\$NVM_DIR/nvm.sh" ] && . "\$NVM_DIR/nvm.sh" [ -s "\$NVM_DIR/bash_completion" ] && . "\$NVM_DIR/bash_completion" EOF # 备份现有配置 manage_config "backup" "${USER_HOME}/.zshrc" # 配置nvm cat >> "${USER_HOME}/.zshrc" << EOF # nvm配置 export NVM_DIR="\$HOME/.nvm" [ -s "\$NVM_DIR/nvm.sh" ] && . "\$NVM_DIR/nvm.sh" # This loads nvm [ -s "\$NVM_DIR/bash_completion" ] && . "\$NVM_DIR/bash_completion" # This loads nvm bash_completion EOF # 确保.nvm目录权限正确 chown -R $CURRENT_USER:$CURRENT_USER "${USER_HOME}/.nvm" log_success "nvm安装完成" } # 安装Node.js install_nodejs() { log_info "安装Node.js..." # 切换到用户目录 cd "${USER_HOME}" # 以用户身份运行命令 su - $CURRENT_USER << EOF # 设置环境变量 export NVM_DIR="\$HOME/.nvm" [ -s "\$NVM_DIR/nvm.sh" ] && . "\$NVM_DIR/nvm.sh" # 安装最新的LTS版本 nvm install --lts # 设置默认版本 nvm alias default 'lts/*' # 使用默认版本 nvm use default EOF log_success "Node.js安装完成" } # 配置npm configure_npm() { log_info "配置npm..." # 切换到用户目录 cd "${USER_HOME}" # 以用户身份运行命令 su - $CURRENT_USER << 'EOF' # 设置npm镜像 npm config set registry https://registry.npmmirror.com # 删除可能与nvm冲突的配置 npm config delete prefix npm config delete globalconfig EOF log_success "npm配置完成" } # 安装全局npm包 install_global_packages() { log_info "安装全局npm包..." # 切换到用户目录 cd "${USER_HOME}" # 以用户身份运行命令 su - $CURRENT_USER << EOF # 设置环境变量 export NVM_DIR="\$HOME/.nvm" [ -s "\$NVM_DIR/nvm.sh" ] && . "\$NVM_DIR/nvm.sh" # 安装常用开发工具 npm install -g typescript npm install -g ts-node npm install -g nodemon npm install -g yarn npm install -g pnpm npm install -g @vue/cli npm install -g create-react-app npm install -g @angular/cli npm install -g nx # 安装开发效率工具 npm install -g serve npm install -g http-server npm install -g json-server npm install -g concurrently # 安装代码质量工具 npm install -g eslint npm install -g prettier npm install -g stylelint EOF log_success "全局npm包安装完成" } # 主函数 main() { # 检查root权限 check_root # 获取用户信息 get_user_info # 设置日志 setup_logging log_info "开始安装Node.js开发环境..." # 检查依赖 check_dependencies curl git build-essential # 安装nvm install_nvm # 安装Node.js install_nodejs # 配置npm configure_npm # 安装全局npm包 install_global_packages log_success "Node.js开发环境安装完成!" log_info "请运行 'source ~/.zshrc' 或重新打开终端以使环境变量生效。" } # 设置清理函数 trap cleanup EXIT # 执行主函数 main