Mars 6ddba3e722 Initial commit
feat: 完成 Zsh 插件配置脚本的优化和测试 - 修复 autojump 配置冲突 - 清理重复的插件安装 - 优化脚本结构和注释

feat: 优化shell脚本 - 1. 增强错误处理和恢复机制 2. 添加网络连接优化和镜像源支持 3. 改进进度显示和用户交互 4. 优化配置文件管理和备份 5. 改进插件管理机制 6. 增强依赖检查和安装 7. 添加完整的日志记录功能 8. 修复字体安装相关问题

docs: 完善shell、system和utils部分的README文档 - 1. 添加详细的脚本说明和使用方法 2. 补充依赖要求和注意事项 3. 添加常见问题解答 4. 更新版本日志

feat(editor): 优化 neovim 和 nvchad 安装脚本,添加性能优化配置和详细文档

feat: 优化Python开发环境安装脚本,分离基础包和机器学习包,修复virtualenvwrapper配置

feat: 优化开发工具安装脚本,统一使用common.sh中的函数,改进错误处理

fix: 修复DNMP安装脚本,跳过自动配置PHP开发环境

fix: 提交删除的 init.sh 和 mysql.sh 文件
2025-03-25 16:14:03 +08:00

174 lines
4.0 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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