Node.js开发环境完整部署指南

目录


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 最佳实践

  1. 版本管理: 使用NVM管理Node.js版本,团队统一版本
  2. 包管理: 优先使用npm,配置国内镜像提高速度
  3. 缓存管理: 定期清理缓存,监控磁盘使用
  4. 安全性: 定期更新包,使用npm audit检查漏洞
  5. 团队协作: 使用.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开发环境。开始你的开发之旅吧!

相关推荐
一只会跑会跳会发疯的猴子14 分钟前
ajax访问阿里云天气接口,获取7天天气
前端·ajax·okhttp
利刃大大16 分钟前
【在线五子棋对战】五、前端扫盲:html && css && javascript && ajax && jquery && websocket
前端·javascript·html
石小石Orz22 分钟前
被谷歌插件劝退,我半小时学会了油猴脚本开发
前端
阁下何不同风起?42 分钟前
前端导出PDF(适配ios Safari浏览器)
前端·pdf
zhangxingchao1 小时前
Flutter网络编程与数据存储技术
前端
啪叽1 小时前
探索鲜为人知的浏览器API:document.currentScript的实用案例
前端·javascript·dom
DuxWeb1 小时前
为什么 React 如此简单:5分钟理解核心概念,快速上手开发
前端·react.js
陈随易1 小时前
VSCode v1.101发布,MCP极大增强关联万物,基于VSCode的操作系统雏形已初见端倪
前端·后端·程序员