目录
- 1. 环境准备
- 2. 目录结构规划
- 3. NVM安装与配置
- 4. Node.js安装与升级
- 5. NPM和Yarn配置
- 6. 环境配置文件
- 7. 管理工具脚本
- 8. 常用开发包安装
- 9. 项目模板工具
- 10. 环境验证与测试
- 11. 故障排除
- 12. 维护和升级
1. 环境准备
1.1 系统要求
- Ubuntu 18.04+ / CentOS 7+ / macOS 10.15+
- 至少 4GB 可用磁盘空间
- 网络连接(用于下载包和镜像)
1.2 安装系统依赖
bash
# Ubuntu/Debian
sudo apt update
sudo apt install -y curl wget git build-essential
# CentOS/RHEL
sudo yum update
sudo yum groupinstall -y "Development Tools"
sudo yum install -y curl wget git
# macOS (需要先安装 Homebrew)
brew install curl wget git
2. 目录结构规划
2.1 创建目录结构
bash
# 创建主要目录
sudo mkdir -p /data/{node,cache,projects,tools}
# 设置权限(将 username 替换为你的用户名)
sudo chown -R $USER:$USER /data
# 创建详细目录结构
mkdir -p /data/{
node/{nvm,global},
cache/{npm,yarn,nvm},
projects,
tools
}
# 验证目录结构
tree /data -L 3
2.2 目录用途说明
bash
/data/
├── node/ # Node.js相关
│ ├── nvm/ # NVM安装目录
│ └── global/ # 全局包安装目录
├── cache/ # 缓存目录
│ ├── npm/ # NPM缓存
│ ├── yarn/ # Yarn缓存
│ └── nvm/ # NVM缓存
├── projects/ # 项目开发目录
└── tools/ # 管理工具脚本
3. NVM安装与配置
3.1 下载和安装NVM
bash
# 设置NVM目录
export NVM_DIR="/data/node/nvm"
# 下载并安装NVM(使用国内镜像)
curl -o- https://gitee.com/mirrors/nvm/raw/master/install.sh | bash
# 或者使用官方源
# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
3.2 配置NVM环境变量
bash
# 临时加载NVM
export NVM_DIR="/data/node/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"
# 验证NVM安装
nvm --version
4. Node.js安装与升级
4.1 配置Node.js下载镜像
bash
# 设置Node.js下载镜像(国内用户推荐)
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/
4.2 安装Node.js
bash
# 查看可用版本
nvm list-remote | tail -20
# 安装最新LTS版本
nvm install --lts
# 安装最新稳定版本
nvm install node
# 设置默认版本(推荐使用LTS)
nvm alias default lts/*
# 使用指定版本
nvm use lts/*
# 验证安装
node --version
npm --version
5. NPM和Yarn配置
5.1 NPM配置
bash
# 设置NPM缓存目录
npm config set cache /data/cache/npm
# 设置国内镜像源
npm config set registry https://registry.npmmirror.com
# 升级NPM到最新版本
npm install -g npm@latest
# 验证配置
npm config list
5.2 Yarn安装和配置
bash
# 安装Yarn
npm install -g yarn
# 配置Yarn
yarn config set registry https://registry.npmmirror.com
yarn config set cache-folder /data/cache/yarn
# 验证Yarn
yarn --version
yarn config list
6. 环境配置文件
6.1 配置 ~/.bashrc
将以下配置添加到 ~/.bashrc
文件:
ini
# === Node.js 环境配置 ===
export NVM_DIR="/data/node/nvm"
export NVM_CACHE_DIR="/data/cache/nvm"
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/
# 加载NVM
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"
# Node.js环境配置函数
setup_node_env() {
if command -v npm > /dev/null 2>&1; then
# NPM配置
npm config set cache /data/cache/npm
npm config set registry https://registry.npmmirror.com
# 确保全局bin目录在PATH中
local npm_prefix=$(npm config get prefix)
if [[ ":$PATH:" != *":$npm_prefix/bin:"* ]]; then
export PATH="$npm_prefix/bin:$PATH"
fi
fi
if command -v yarn > /dev/null 2>&1; then
yarn config set cache-folder /data/cache/yarn
yarn config set registry https://registry.npmmirror.com
fi
}
# 在shell启动时自动配置
if [ -n "$NVM_DIR" ] && [ -s "$NVM_DIR/nvm.sh" ]; then
nvm use default >/dev/null 2>&1
setup_node_env
fi
# === 开发工具别名 ===
alias goprojects='cd /data/projects'
alias gocache='cd /data/cache'
alias gotools='cd /data/tools'
alias npmclean='npm cache clean --force'
alias yarnclean='yarn cache clean'
alias nodeversions='nvm list'
alias nodeuse='nvm use'
alias npmglobal='npm list -g --depth=0'
# 工具脚本别名
alias nodemanager="/data/tools/node-manager.sh"
alias devinfo="/data/tools/dev-info.sh"
alias newproject="/data/tools/create-project.sh"
alias newproj="/data/tools/create-project-v2.sh"
alias healthcheck="/data/tools/health-check.sh"
alias fixnode="/data/tools/fix-node-env.sh"
alias installpkgs="/data/tools/install-common-packages.sh"
6.2 重新加载配置
bash
source ~/.bashrc
7. 管理工具脚本
7.1 Node.js管理器脚本
创建 /data/tools/node-manager.sh
:
bash
#!/bin/bash
case "$1" in
"switch")
echo "切换到Node.js $2"
nvm use $2
setup_node_env 2>/dev/null || {
npm config set cache /data/cache/npm
npm config set registry https://registry.npmmirror.com
}
;;
"install")
echo "安装Node.js $2"
nvm install $2
;;
"config")
echo "重新配置NPM和Yarn..."
npm config set cache /data/cache/npm
npm config set registry https://registry.npmmirror.com
yarn config set registry https://registry.npmmirror.com 2>/dev/null
yarn config set cache-folder /data/cache/yarn 2>/dev/null
echo "配置完成!"
;;
"status")
echo "=== Node.js 环境状态 ==="
echo "Node版本: $(node --version 2>/dev/null || echo 'Not available')"
echo "NPM版本: $(npm --version 2>/dev/null || echo 'Not available')"
echo "Yarn版本: $(yarn --version 2>/dev/null || echo 'Not installed')"
echo "NPM Registry: $(npm config get registry 2>/dev/null || echo 'Not configured')"
echo "NPM Cache: $(npm config get cache 2>/dev/null || echo 'Not configured')"
echo "NPM Prefix: $(npm config get prefix 2>/dev/null || echo 'Not configured')"
echo "NVM Current: $(nvm current 2>/dev/null || echo 'Not available')"
echo "全局包路径: $(npm config get prefix 2>/dev/null)/bin"
;;
"fix")
echo "修复Node.js环境..."
unset NPM_CONFIG_PREFIX
nvm use default
npm config set cache /data/cache/npm
npm config set registry https://registry.npmmirror.com
echo "修复完成!请运行 'source ~/.bashrc'"
;;
"upgrade")
echo "升级Node.js到最新版本..."
echo "当前版本: $(node --version)"
nvm install node --reinstall-packages-from=current
nvm alias default node
echo "升级完成,新版本: $(node --version)"
;;
*)
echo "用法: $0 {switch|install|config|status|fix|upgrade}"
echo " switch <version> - 切换Node.js版本"
echo " install <version> - 安装Node.js版本"
echo " config - 重新配置NPM和Yarn"
echo " status - 显示当前状态"
echo " fix - 修复环境问题"
echo " upgrade - 升级到最新版本"
;;
esac
7.2 环境信息查看脚本
创建 /data/tools/dev-info.sh
:
bash
#!/bin/bash
echo "=================== 开发环境信息 ==================="
echo "系统信息:"
echo " 操作系统: $(lsb_release -d 2>/dev/null | cut -f2 || uname -s)"
echo " 内核版本: $(uname -r)"
echo " 架构: $(uname -m)"
echo -e "\nNode.js 环境:"
echo " Node版本: $(node --version 2>/dev/null || echo 'Not installed')"
echo " NPM版本: $(npm --version 2>/dev/null || echo 'Not installed')"
echo " Yarn版本: $(yarn --version 2>/dev/null || echo 'Not installed')"
echo " NVM版本: $(nvm --version 2>/dev/null || echo 'Not available')"
echo -e "\n配置信息:"
echo " NPM Registry: $(npm config get registry 2>/dev/null || echo 'Not configured')"
echo " NPM Cache: $(npm config get cache 2>/dev/null || echo 'Not configured')"
echo " NPM Prefix: $(npm config get prefix 2>/dev/null || echo 'Not configured')"
echo " Yarn Cache: $(yarn config get cache-folder 2>/dev/null || echo 'Not configured')"
echo -e "\n可用的Node.js版本:"
nvm list 2>/dev/null || echo " NVM不可用"
echo -e "\n全局安装的包:"
npm list -g --depth=0 2>/dev/null | head -20 || echo " 无法获取全局包列表"
echo -e "\n缓存目录大小:"
if [ -d "/data/cache" ]; then
du -sh /data/cache/* 2>/dev/null || echo " 缓存目录为空"
else
echo " 缓存目录不存在"
fi
echo -e "\n项目目录:"
if [ -d "/data/projects" ]; then
ls -la /data/projects/ 2>/dev/null | head -10 || echo " 项目目录为空"
else
echo " 项目目录不存在"
fi
echo "================================================="
7.3 健康检查脚本
创建 /data/tools/health-check.sh
:
bash
#!/bin/bash
echo "=== Node.js 开发环境健康检查 ==="
# 检查基础环境
echo "🔍 检查基础环境..."
command -v node >/dev/null 2>&1 && echo "✅ Node.js: $(node --version)" || echo "❌ Node.js 未安装"
command -v npm >/dev/null 2>&1 && echo "✅ NPM: $(npm --version)" || echo "❌ NPM 未安装"
command -v yarn >/dev/null 2>&1 && echo "✅ Yarn: $(yarn --version)" || echo "❌ Yarn 未安装"
command -v nvm >/dev/null 2>&1 && echo "✅ NVM: $(nvm --version)" || echo "❌ NVM 未安装"
# 检查重要工具
echo -e "\n🛠️ 检查开发工具..."
tools=("tsc" "eslint" "prettier" "pm2" "nodemon" "webpack" "vite")
missing_tools=()
for tool in "${tools[@]}"; do
if command -v $tool >/dev/null 2>&1; then
echo "✅ $tool: 已安装"
else
echo "❌ $tool: 未安装"
missing_tools+=($tool)
fi
done
# 检查缓存目录
echo -e "\n📁 检查缓存目录..."
[ -d "/data/cache/npm" ] && echo "✅ NPM缓存目录存在" || echo "❌ NPM缓存目录不存在"
[ -d "/data/cache/yarn" ] && echo "✅ Yarn缓存目录存在" || echo "❌ Yarn缓存目录不存在"
# 检查配置
echo -e "\n⚙️ 检查配置..."
npm_registry=$(npm config get registry 2>/dev/null)
[ "$npm_registry" = "https://registry.npmmirror.com" ] && echo "✅ NPM使用国内镜像" || echo "⚠️ NPM镜像: $npm_registry"
echo -e "\n💾 缓存大小:"
du -sh /data/cache/* 2>/dev/null || echo "缓存目录为空"
# 提供修复建议
if [ ${#missing_tools[@]} -gt 0 ]; then
echo -e "\n🔧 修复建议:"
echo "运行以下命令安装缺失的工具:"
echo "npm install -g ${missing_tools[*]}"
fi
echo -e "\n=== 健康检查完成 ==="
7.4 环境修复脚本
创建 /data/tools/fix-node-env.sh
:
bash
#!/bin/bash
echo "=== Node.js 环境一键修复 ==="
# 1. 清理环境变量冲突
echo "1. 清理环境变量冲突..."
unset NPM_CONFIG_PREFIX
# 2. 重新加载NVM
echo "2. 重新加载NVM..."
export NVM_DIR="/data/node/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
# 3. 使用默认Node版本
echo "3. 激活默认Node版本..."
nvm use default
# 4. 重新配置NPM
echo "4. 重新配置NPM..."
npm config set cache /data/cache/npm
npm config set registry https://registry.npmmirror.com
# 5. 重新配置Yarn
echo "5. 重新配置Yarn..."
if command -v yarn >/dev/null 2>&1; then
yarn config set registry https://registry.npmmirror.com
yarn config set cache-folder /data/cache/yarn
fi
# 6. 重新安装基础工具
echo "6. 重新安装基础工具..."
npm install -g pm2 nodemon typescript ts-node
# 7. 验证安装
echo "7. 验证安装..."
echo "Node: $(node --version)"
echo "NPM: $(npm --version)"
echo "NPM Prefix: $(npm config get prefix)"
echo "=== 修复完成 ==="
echo "请运行 'source ~/.bashrc' 重新加载配置"
7.5 设置脚本权限
bash
chmod +x /data/tools/*.sh
8. 常用开发包安装
8.1 创建包安装脚本
创建 /data/tools/install-common-packages.sh
:
bash
#!/bin/bash
echo "开始安装常用的全局开发包..."
# 基础工具
echo "📦 安装基础开发工具..."
npm install -g pm2 # 进程管理器
npm install -g nodemon # 自动重启工具
npm install -g concurrently # 并发运行命令
npm install -g cross-env # 跨平台环境变量
# TypeScript相关
echo "📦 安装TypeScript相关工具..."
npm install -g typescript # TypeScript编译器
npm install -g ts-node # 直接运行TS文件
npm install -g @types/node # Node.js类型定义
# 前端框架CLI
echo "📦 安装前端框架CLI工具..."
npm install -g @vue/cli # Vue CLI
npm install -g create-react-app # React创建工具
npm install -g @angular/cli # Angular CLI
# 构建和打包工具
echo "📦 安装构建工具..."
npm install -g webpack # 模块打包器
npm install -g webpack-cli # Webpack命令行
npm install -g vite # 现代前端构建工具
npm install -g parcel # 零配置构建工具
# 代码质量工具
echo "📦 安装代码质量工具..."
npm install -g eslint # 代码检查
npm install -g prettier # 代码格式化
npm install -g stylelint # CSS代码检查
# 测试工具
echo "📦 安装测试工具..."
npm install -g jest # 测试框架
npm install -g mocha # 测试框架
# 实用工具
echo "📦 安装实用工具..."
npm install -g http-server # 简单HTTP服务器
npm install -g live-server # 带热重载的服务器
npm install -g json-server # 模拟REST API
npm install -g serve # 静态文件服务
# 包管理工具
echo "📦 安装包管理工具..."
npm install -g npm-check-updates # 检查包更新
echo "✅ 安装完成!"
echo "📋 查看所有已安装的全局包:"
npm list -g --depth=0
8.2 运行安装脚本
bash
chmod +x /data/tools/install-common-packages.sh
/data/tools/install-common-packages.sh
9. 项目模板工具
9.1 基础项目创建工具
创建 /data/tools/create-project.sh
:
bash
#!/bin/bash
PROJECT_NAME="$1"
PROJECT_TYPE="$2"
if [ -z "$PROJECT_NAME" ]; then
echo "用法: $0 <项目名> [类型]"
echo "类型选项: react, vue, express, typescript, node"
exit 1
fi
PROJECT_DIR="/data/projects/$PROJECT_NAME"
if [ -d "$PROJECT_DIR" ]; then
echo "项目目录已存在: $PROJECT_DIR"
exit 1
fi
mkdir -p "$PROJECT_DIR"
cd "$PROJECT_DIR"
case "$PROJECT_TYPE" in
"react")
echo "创建React项目..."
npx create-react-app . --template typescript
;;
"vue")
echo "创建Vue项目..."
npx @vue/cli create . --default
;;
"express")
echo "创建Express项目..."
npm init -y
npm install express
npm install -D nodemon
echo "const express = require('express'); const app = express(); app.get('/', (req, res) => res.send('Hello Express!')); app.listen(3000, () => console.log('Server running on port 3000'));" > index.js
;;
"typescript")
echo "创建TypeScript项目..."
npm init -y
npm install -D typescript @types/node ts-node nodemon
npx tsc --init
mkdir src
echo "console.log('Hello TypeScript!');" > src/index.ts
;;
*)
echo "创建基础Node.js项目..."
npm init -y
npm install lodash
npm install -D nodemon
echo "console.log('Hello Node.js!');" > index.js
;;
esac
echo "项目创建完成: $PROJECT_DIR"
echo "进入项目目录: cd $PROJECT_DIR"
9.2 高级项目创建工具
创建 /data/tools/create-project-v2.sh
:
bash
#!/bin/bash
PROJECT_NAME="$1"
PROJECT_TYPE="$2"
if [ -z "$PROJECT_NAME" ]; then
echo "用法: $0 <项目名> [类型]"
echo "类型选项:"
echo " react - React + TypeScript项目"
echo " vue - Vue 3 + TypeScript项目"
echo " next - Next.js项目"
echo " vite - Vite + TypeScript项目"
echo " express - Express + TypeScript API"
echo " node - Node.js + TypeScript项目"
echo " fullstack - 全栈项目模板"
exit 1
fi
PROJECT_DIR="/data/projects/$PROJECT_NAME"
if [ -d "$PROJECT_DIR" ]; then
echo "项目目录已存在: $PROJECT_DIR"
exit 1
fi
mkdir -p "$PROJECT_DIR"
cd "$PROJECT_DIR"
case "$PROJECT_TYPE" in
"react")
echo "创建React + TypeScript项目..."
npx create-react-app . --template typescript
;;
"vue")
echo "创建Vue 3 + TypeScript项目..."
npm create vue@latest . -- --typescript --router --pinia --vitest --eslint
;;
"next")
echo "创建Next.js项目..."
npx create-next-app@latest . --typescript --tailwind --eslint --app
;;
"vite")
echo "创建Vite + TypeScript项目..."
npm create vite@latest . -- --template react-ts
;;
"express")
echo "创建Express + TypeScript API..."
npm init -y
npm install express cors helmet compression
npm install -D typescript @types/node @types/express @types/cors ts-node nodemon eslint prettier
npx tsc --init
mkdir -p src routes middleware
cat > src/app.ts << 'EOF'
import express from 'express';
import cors from 'cors';
import helmet from 'helmet';
import compression from 'compression';
const app = express();
const PORT = process.env.PORT || 3000;
app.use(helmet());
app.use(cors());
app.use(compression());
app.use(express.json());
app.get('/', (req, res) => {
res.json({ message: 'Hello TypeScript Express!' });
});
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
EOF
;;
"node")
echo "创建Node.js + TypeScript项目..."
npm init -y
npm install -D typescript @types/node ts-node nodemon eslint prettier
npx tsc --init
mkdir src
echo "console.log('Hello TypeScript Node.js!');" > src/index.ts
;;
"fullstack")
echo "创建全栈项目模板..."
mkdir -p frontend backend shared
cd frontend && npx create-react-app . --template typescript
cd ../backend && npm init -y && npm install express && npm install -D typescript @types/node
cd ../shared && npm init -y
cd ..
;;
*)
echo "创建基础TypeScript项目..."
npm init -y
npm install -D typescript @types/node ts-node nodemon
npx tsc --init
mkdir src
echo "console.log('Hello TypeScript!');" > src/index.ts
;;
esac
echo "项目创建完成: $PROJECT_DIR"
echo "进入项目目录: cd $PROJECT_DIR"
9.3 设置脚本权限
bash
chmod +x /data/tools/create-project*.sh
10. 环境验证与测试
10.1 基础功能验证
bash
# 检查Node.js环境
nodemanager status
# 运行健康检查
healthcheck
# 查看详细环境信息
devinfo
10.2 创建测试项目
bash
# 测试项目创建
newproject hello-test express
# 进入项目并测试
cd /data/projects/hello-test
node index.js
# 测试全局包
pm2 --version
nodemon --version
tsc --version
10.3 性能测试
bash
# 测试NPM安装速度
cd /data/projects
mkdir speed-test && cd speed-test
npm init -y
# 测试包安装速度
time npm install express lodash axios
# 测试Yarn安装速度
time yarn add react react-dom
# 清理测试
cd .. && rm -rf speed-test
11. 故障排除
11.1 常见问题
问题1:NVM与NPM_CONFIG_PREFIX冲突
bash
# 解决方案
unset NPM_CONFIG_PREFIX
source ~/.bashrc
nvm use default
问题2:全局包丢失
bash
# 解决方案
fixnode
source ~/.bashrc
installpkgs
问题3:权限问题
bash
# 解决方案
sudo chown -R $USER:$USER /data
sudo chown -R $USER:$USER ~/.npm
问题4:缓存问题
bash
# 清理缓存
npmclean
yarnclean
npm cache verify
11.2 诊断命令
bash
# 完整诊断
echo "=== 环境诊断 ==="
echo "Node路径: $(which node)"
echo "NPM路径: $(which npm)"
echo "NVM目录: $NVM_DIR"
echo "PATH: $PATH"
echo "NPM前缀: $(npm config get prefix)"
echo "全局包路径: $(npm config get prefix)/bin"
# 检查环境变量
env | grep -E "(NODE|NPM|NVM|YARN)"
12. 维护和升级
12.1 定期维护脚本
创建 /data/tools/maintenance.sh
:
bash
#!/bin/bash
echo "=== Node.js 环境维护 ==="
# 1. 清理缓存
echo "1. 清理缓存..."
npm cache clean --force
yarn cache clean 2>/dev/null
# 2. 更新全局包
echo "2. 检查全局包更新..."
npm update -g
# 3. 检查Node.js版本
echo "3. 检查Node.js版本..."
echo "当前版本: $(node --version)"
echo "最新LTS版本:"
nvm list-remote --lts | tail -1
# 4. 清理旧版本
echo "4. 显示已安装的Node.js版本:"
nvm list
# 5. 磁盘使用情况
echo "5. 缓存目录使用情况:"
du -sh /data/cache/*
echo "=== 维护完成 ==="
12.2 升级策略
perl
# 升级Node.js
nodemanager upgrade
# 升级NPM
npm install -g npm@latest
# 升级Yarn
npm install -g yarn@latest
# 升级全局包
npm update -g
12.3 备份配置
bash
# 备份配置
mkdir -p /data/backups
# 备份脚本
cat > /data/tools/backup-config.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/data/backups/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
echo "备份Node.js环境配置到: $BACKUP_DIR"
# 备份配置文件
cp ~/.bashrc "$BACKUP_DIR/"
cp ~/.npmrc "$BACKUP_DIR/" 2>/dev/null
cp ~/.yarnrc "$BACKUP_DIR/" 2>/dev/null
# 备份全局包列表
npm list -g --depth=0 > "$BACKUP_DIR/npm-global-packages.txt"
# 备份NVM版本信息
nvm list > "$BACKUP_DIR/nvm-versions.txt" 2>/dev/null
# 备份工具脚本
cp -r /data/tools "$BACKUP_DIR/"
echo "备份完成: $BACKUP_DIR"
EOF
chmod +x /data/tools/backup-config.sh
13. 性能优化
13.1 NPM性能优化
bash
# 创建性能优化脚本
cat > /data/tools/optimize-npm.sh << 'EOF'
#!/bin/bash
echo "优化NPM性能设置..."
# 设置并发安装数
npm config set maxsockets 50
# 设置缓存相关
npm config set cache-max 1073741824 # 1GB
npm config set cache-min 864000 # 10天
# 禁用进度条(提高CI/CD性能)
npm config set progress false
# 设置日志级别
npm config set loglevel warn
# 设置代理(如果需要)
# npm config set proxy http://proxy.company.com:8080
# npm config set https-proxy http://proxy.company.com:8080
echo "NPM性能优化完成!"
npm config list
EOF
chmod +x /data/tools/optimize-npm.sh
13.2 Yarn性能优化
bash
# Yarn性能优化
cat > /data/tools/optimize-yarn.sh << 'EOF'
#!/bin/bash
echo "优化Yarn性能设置..."
# 设置网络超时
yarn config set network-timeout 300000
# 设置并发安装数
yarn config set network-concurrency 16
# 禁用进度条
yarn config set progress false
# 设置缓存相关
yarn config set cache-folder /data/cache/yarn
echo "Yarn性能优化完成!"
yarn config list
EOF
chmod +x /data/tools/optimize-yarn.sh
14. 安全配置
14.1 NPM安全配置
bash
# 安全设置脚本
cat > /data/tools/security-config.sh << 'EOF'
#!/bin/bash
echo "配置NPM安全设置..."
# 启用审计
npm config set audit-level moderate
# 设置包签名验证
npm config set sign-git-tag true
# 安装安全审计工具
npm install -g npm-audit-resolver
echo "安全配置完成!"
EOF
chmod +x /data/tools/security-config.sh
14.2 权限安全
bash
# 设置正确的文件权限
sudo chown -R $USER:$USER /data
chmod -R 755 /data/tools
chmod -R 644 /data/cache
15. 监控和日志
15.1 环境监控脚本
bash
cat > /data/tools/monitor-env.sh << 'EOF'
#!/bin/bash
LOG_FILE="/data/logs/env-monitor.log"
mkdir -p /data/logs
echo "$(date): 环境监控开始" >> "$LOG_FILE"
# 检查磁盘使用
CACHE_SIZE=$(du -sm /data/cache 2>/dev/null | cut -f1)
echo "$(date): 缓存目录大小: ${CACHE_SIZE}MB" >> "$LOG_FILE"
# 检查Node.js进程
NODE_PROCESSES=$(pgrep -c node)
echo "$(date): Node.js进程数: $NODE_PROCESSES" >> "$LOG_FILE"
# 检查NPM/Yarn状态
if ! npm ping >/dev/null 2>&1; then
echo "$(date): NPM连接异常" >> "$LOG_FILE"
fi
echo "$(date): 环境监控完成" >> "$LOG_FILE"
EOF
chmod +x /data/tools/monitor-env.sh
15.2 日志轮转
bash
# 创建日志轮转脚本
cat > /data/tools/rotate-logs.sh << 'EOF'
#!/bin/bash
LOG_DIR="/data/logs"
MAX_SIZE="100M"
if [ -d "$LOG_DIR" ]; then
find "$LOG_DIR" -name "*.log" -size +$MAX_SIZE -exec mv {} {}.old ;
find "$LOG_DIR" -name "*.log.old" -mtime +30 -delete
fi
EOF
chmod +x /data/tools/rotate-logs.sh
16. 开发工作流
16.1 项目初始化模板
bash
cat > /data/tools/init-workspace.sh << 'EOF'
#!/bin/bash
WORKSPACE_NAME="$1"
if [ -z "$WORKSPACE_NAME" ]; then
echo "用法: $0 <工作空间名称>"
exit 1
fi
WORKSPACE_DIR="/data/projects/$WORKSPACE_NAME"
mkdir -p "$WORKSPACE_DIR"
cd "$WORKSPACE_DIR"
# 创建标准目录结构
mkdir -p {frontend,backend,shared,docs,scripts,tests}
# 创建根package.json
cat > package.json << 'JSON'
{
"name": "workspace-root",
"private": true,
"workspaces": [
"frontend",
"backend",
"shared"
],
"scripts": {
"dev": "concurrently "npm run dev:frontend" "npm run dev:backend"",
"dev:frontend": "cd frontend && npm start",
"dev:backend": "cd backend && npm run dev"
},
"devDependencies": {
"concurrently": "^7.0.0"
}
}
JSON
# 创建README
cat > README.md << 'MD'
# Workspace
## 项目结构
- `frontend/` - 前端应用
- `backend/` - 后端API
- `shared/` - 共享代码
- `docs/` - 文档
- `scripts/` - 构建脚本
- `tests/` - 测试文件
## 快速开始
```bash
# 安装依赖
npm install
# 启动开发环境
npm run dev
MD
echo "工作空间创建完成: $WORKSPACE_DIR" EOF
chmod +x /data/tools/init-workspace.sh
ini
### 16.2 快速命令别名
```bash
# 添加更多便捷别名
cat >> ~/.bashrc << 'EOF'
# === 项目开发别名 ===
alias cdproj='cd /data/projects'
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# Git 别名
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git pull'
# 快速服务器
alias serve='npx http-server -p 8080'
alias livereload='npx live-server --port=8080'
# 包管理
alias ni='npm install'
alias nid='npm install --save-dev'
alias nr='npm run'
alias ns='npm start'
alias nt='npm test'
# Yarn 别名
alias yi='yarn install'
alias ya='yarn add'
alias yad='yarn add --dev'
alias yr='yarn run'
alias ys='yarn start'
alias yt='yarn test'
EOF
17. 团队协作配置
17.1 团队配置标准化
bash
cat > /data/tools/team-setup.sh << 'EOF'
#!/bin/bash
echo "设置团队开发标准..."
# 统一Node.js版本
NODE_VERSION="18.19.0" # 或最新LTS
echo "统一Node.js版本到: $NODE_VERSION"
nvm install $NODE_VERSION
nvm use $NODE_VERSION
nvm alias default $NODE_VERSION
# 创建.nvmrc文件模板
echo "$NODE_VERSION" > /data/tools/.nvmrc.template
# 统一包管理器版本
npm install -g npm@latest
npm install -g [email protected]
# 团队必装工具
npm install -g \
eslint \
prettier \
husky \
lint-staged \
commitizen \
@commitlint/cli
echo "团队标准配置完成!"
EOF
chmod +x /data/tools/team-setup.sh
17.2 代码质量配置模板
bash
mkdir -p /data/templates
# ESLint配置模板
cat > /data/templates/.eslintrc.js << 'EOF'
module.exports = {
env: {
browser: true,
es2021: true,
node: true,
},
extends: [
'eslint:recommended',
'@typescript-eslint/recommended',
],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 12,
sourceType: 'module',
},
plugins: [
'@typescript-eslint',
],
rules: {
'indent': ['error', 2],
'linebreak-style': ['error', 'unix'],
'quotes': ['error', 'single'],
'semi': ['error', 'always'],
},
};
EOF
# Prettier配置模板
cat > /data/templates/.prettierrc << 'EOF'
{
"semi": true,
"trailingComma": "all",
"singleQuote": true,
"printWidth": 80,
"tabWidth": 2,
"useTabs": false
}
EOF
# EditorConfig模板
cat > /data/templates/.editorconfig << 'EOF'
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 2
[*.md]
trim_trailing_whitespace = false
EOF
18. 自动化部署
18.1 部署脚本
bash
cat > /data/tools/deploy.sh << 'EOF'
#!/bin/bash
PROJECT_PATH="$1"
BUILD_COMMAND="$2"
DEPLOY_PATH="$3"
if [ -z "$PROJECT_PATH" ] || [ -z "$BUILD_COMMAND" ] || [ -z "$DEPLOY_PATH" ]; then
echo "用法: $0 <项目路径> <构建命令> <部署路径>"
echo "示例: $0 /data/projects/my-app 'npm run build' /var/www/html"
exit 1
fi
echo "开始部署项目..."
# 进入项目目录
cd "$PROJECT_PATH" || exit 1
# 更新代码
git pull origin main
# 安装依赖
npm ci
# 运行测试
npm test
# 构建项目
eval "$BUILD_COMMAND"
# 部署到目标目录
sudo rsync -av --delete build/ "$DEPLOY_PATH/"
# 重启服务(如果需要)
# sudo systemctl restart nginx
echo "部署完成!"
EOF
chmod +x /data/tools/deploy.sh
19. 常用命令速查
19.1 环境管理命令
csharp
# Node.js版本管理
nvm list # 查看已安装版本
nvm install --lts # 安装最新LTS
nvm use 18.19.0 # 切换版本
nvm alias default 18.19.0 # 设置默认版本
# 包管理
npm install -g <package> # 全局安装
npm list -g --depth=0 # 查看全局包
npm update -g # 更新全局包
npm cache clean --force # 清理缓存
# 自定义命令
nodemanager status # 查看环境状态
healthcheck # 健康检查
devinfo # 详细环境信息
newproj myapp react # 创建React项目
fixnode # 修复环境
19.2 项目开发命令
bash
# 项目初始化
npm init -y # 快速初始化
npm install # 安装依赖
npm run dev # 开发模式
npm run build # 构建项目
npm test # 运行测试
# 进程管理
pm2 start app.js # 启动应用
pm2 list # 查看进程
pm2 stop all # 停止所有
pm2 logs # 查看日志
20. 总结和最佳实践
20.1 最佳实践
- 版本管理: 使用NVM管理Node.js版本,团队统一版本
- 包管理: 优先使用npm,配置国内镜像提高速度
- 缓存管理: 定期清理缓存,监控磁盘使用
- 安全性: 定期更新包,使用npm audit检查漏洞
- 团队协作: 使用.nvmrc锁定Node.js版本,配置代码质量工具
20.2 注意事项
- 避免使用sudo安装全局包
- 不要手动修改NPM_CONFIG_PREFIX
- 定期备份配置和项目
- 监控缓存目录大小
- 保持工具版本更新
20.3 故障恢复
bash
# 快速恢复命令
fixnode # 修复Node.js环境
source ~/.bashrc # 重新加载配置
healthcheck # 验证环境状态
附录
A. 完整的脚本文件列表
bash
/data/tools/
├── node-manager.sh # Node.js管理器
├── dev-info.sh # 环境信息查看
├── health-check.sh # 健康检查
├── fix-node-env.sh # 环境修复
├── install-common-packages.sh # 常用包安装
├── create-project.sh # 基础项目创建
├── create-project-v2.sh # 高级项目创建
├── maintenance.sh # 定期维护
├── backup-config.sh # 配置备份
├── optimize-npm.sh # NPM优化
├── optimize-yarn.sh # Yarn优化
├── security-config.sh # 安全配置
├── monitor-env.sh # 环境监控
├── rotate-logs.sh # 日志轮转
├── init-workspace.sh # 工作空间初始化
├── team-setup.sh # 团队配置
└── deploy.sh # 部署脚本
B. 配置文件模板
bash
/data/templates/
├── .eslintrc.js # ESLint配置
├── .prettierrc # Prettier配置
├── .editorconfig # EditorConfig
└── .nvmrc.template # Node.js版本锁定
C. 别名命令列表
bash
# 环境管理
nodemanager, devinfo, healthcheck, fixnode
# 项目管理
newproject, newproj, goprojects
# 缓存管理
gocache, npmclean, yarnclean
# 开发工具
serve, livereload, cdproj
🎉 恭喜!Node.js开发环境部署完成!
现在你拥有一个完整、高效、易维护的Node.js开发环境。开始你的开发之旅吧!