# Vue2-Client 项目常用命令

## Windows系统命令说明
本项目在Windows系统下开发，使用PowerShell或CMD。

## 核心开发命令

### 开发服务器（开发模式）
```powershell
# 默认开发服务器 (端口8020)
npm run serve

# MacOS/Linux开发服务器
npm run mac-serve
```

### 多环境开发服务器
支持以下环境模式，每个模式对应不同的代理配置：
```powershell
npm run serve:gaslink   # 燃气链路模式
npm run serve:revenue   # 营收模式
npm run serve:liuli     # 流离模式
npm run serve:scada     # SCADA模式
npm run serve:iot       # IoT模式
npm run serve:his       # HIS医院信息系统模式
npm run serve:runtime   # 运行时模式
npm run serve:message   # 消息模式
npm run serve:apply     # 应用模式
```

### 构建命令
```powershell
# 生产环境构建
npm run build

# 预览环境构建
npm run build:preview
```

### 代码质量检查
```powershell
# 运行ESLint并自动修复
npm run lint

# 运行ESLint但不自动修复（仅检查）
npm run lint:nofix
```

### 测试命令
```powershell
# 运行Jest单元测试
npm test

# 运行Vue CLI单元测试
npm run test:unit
```

## 重要说明

### NODE_OPTIONS配置
Windows环境下所有开发命令需要设置`NODE_OPTIONS=--openssl-legacy-provider`来解决OpenSSL兼容性问题。这已经集成在`package.json`的scripts中。

### 开发服务器配置
- 默认端口：8020
- 开发模式默认禁用ESLint（--no-eslint），需要单独运行`npm run lint`进行代码检查
- 支持热重载和代理配置

### Windows常用系统命令
```powershell
# 文件和目录操作
dir                  # 列出目录内容（类似Linux的ls）
cd <path>           # 切换目录
mkdir <name>        # 创建目录
rmdir /s <name>     # 删除目录及内容
del <file>          # 删除文件

# 文件搜索
findstr /s "pattern" *.js    # 在js文件中搜索文本（类似Linux的grep）
where <command>              # 查找命令位置（类似Linux的which）

# 进程和端口
netstat -ano | findstr :8020  # 查看端口占用
taskkill /PID <pid> /F        # 终止进程

# Git操作
git status          # 查看仓库状态
git add .           # 添加所有改动
git commit -m ""    # 提交改动
git pull            # 拉取最新代码
git push            # 推送代码
git log             # 查看提交历史
```

## 项目初始化
```powershell
# 克隆项目后首次运行
npm install

# 如果依赖安装失败，尝试清理缓存
npm cache clean --force
npm install
```

## 故障排查

### 端口被占用
```powershell
# 查看8020端口占用
netstat -ano | findstr :8020

# 终止占用端口的进程
taskkill /PID <进程ID> /F
```

### 依赖问题
```powershell
# 删除node_modules和lock文件重新安装
rmdir /s /q node_modules
del package-lock.json
npm install
```

### OpenSSL错误
如果遇到OpenSSL相关错误，确保使用了带有`NODE_OPTIONS`设置的命令，或手动设置：
```powershell
SET NODE_OPTIONS=--openssl-legacy-provider
npm run serve
```