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 文件
174 lines
4.0 KiB
Bash
174 lines
4.0 KiB
Bash
#!/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 |