nuwax-file-server 是一个跨平台的文件服务部署工具,支持 Windows、Linux、macOS 操作系统,提供 start/stop/restart 命令行操作。
nuwax-file-server start # 启动服务 (默认 env.production)
nuwax-file-server start --env dev # 启动服务 (开发环境)
nuwax-file-server stop # 停止服务
nuwax-file-server restart # 重启服务
nuwax-file-server status # 查看服务状态nuwax-file-server/
├── src/
│ ├── cli.js # CLI 入口 (跨平台兼容)
│ ├── server.js # 主服务器
│ ├── routes/
│ │ └── router.js # 路由定义 (含 /health 端点)
│ ├── utils/
│ │ ├── serviceManager.js # 服务管理 (跨平台)
│ │ ├── envUtils.js # 环境变量工具
│ │ ├── build/ # 构建相关工具
│ │ ├── buildArg/ # 构建参数工具
│ │ ├── buildDependency/ # 依赖管理
│ │ ├── buildJudge/ # 构建判断工具
│ │ ├── buildPermission/ # 权限管理
│ │ ├── common/ # 公共工具
│ │ ├── computer/ # 计算机工具
│ │ ├── error/ # 错误处理
│ │ └── log/ # 日志工具
│ ├── appConfig/ # 应用配置 (环境变量等)
│ ├── config/
│ │ └── swagger/ # Swagger 文档配置
│ ├── env.development # 开发环境配置
│ ├── env.production # 生产环境配置
│ └── env.test # 测试环境配置
├── scripts/
│ ├── start-prod.js # 生产环境启动脚本
│ ├── start-dev.js # 开发环境启动脚本
│ └── pnpm-check.sh # pnpm 检查脚本
├── tests/ # 测试文件
└── package.json # 项目配置
所有代码必须支持 Windows、Linux、macOS:
- 路径处理: 使用
path.join(),path.resolve(),os.tmpdir(),os.homedir() - 进程管理: 使用
tree-kill杀进程组,Windows 使用taskkill,Linux/macOS 使用kill信号 - 命令执行: 使用
cross-spawn执行 shell 命令 - 文件操作: 使用
fs-extra增强文件系统操作
- 环境变量优先级: 命令行参数 > 环境变量文件 > 默认值
- 支持通过
--env参数指定环境 (development/production/test) - 支持通过
--env-file指定自定义配置文件 - 配置通过
src/appConfig/index.js统一管理,环境文件位于src/env.*
- 使用
commander.js解析命令行参数 - 命令结构:
nuwax-file-server <command> [options] - 支持的命令: start, stop, restart, status
- 全局选项:
--env,--port,--config,--help
健康检查端点位于 /health,返回格式:
{
"status": "ok",
"timestamp": 1738600000000,
"uptime": 3600,
"version": "1.0.0",
"platform": "darwin"
}- PID 文件存储在临时目录 (
os.tmpdir()) - 启动时检查服务是否已运行
- 停止时支持优雅退出 (30秒超时)
- 重启组合 stop + start 操作
- 使用中文注释(根据项目规则)
- 函数必须添加 JSDoc 注释
- 跨平台代码必须包含平台检测逻辑
- 错误处理必须包含详细日志
- 单元测试放置在
tests/unit/目录 - 测试框架使用 Jest
- 关键函数必须编写单元测试
- 使用
src/utils/log/logUtils.js中的log()函数 - 日志级别: error, warn, info, debug
- 日志文件按日期分割,存储在
LOG_BASE_DIR
- 在
src/routes/目录下创建新的路由文件 - 在
router.js中挂载路由 - 添加相应的服务逻辑到
src/service/目录
- 在
src/cli.js中使用commander定义命令 - 在
src/utils/serviceManager.js中实现服务逻辑 - 更新
README.md文档
- 在
src/env.production/src/env.development/src/env.test中添加环境变量 - 在
config/index.js中读取配置 - 更新
README.md文档
# 开发环境运行
npm run dev
# 生产环境运行
npm run prod
# 运行测试
npm run test
# 发布到 npm
npm publish- 所有平台相关代码必须使用条件判断 (
process.platform) - 避免使用 Unix 特定命令(grep, sed, awk 等)
- Windows 环境使用
cross-spawn执行命令 - 确保日志目录有写入权限