nuwax-file-server
v1.2.0
Published
跨平台的文件服务部署工具,支持 start/stop/restart 命令行操作
Maintainers
Readme
nuwax-file-server
跨平台的文件服务部署工具,支持 Windows、Linux、macOS 操作系统。
功能特性
- CLI 命令行操作: 支持 start / stop / restart / status 命令
- 跨平台支持: Windows、Linux、macOS 完美兼容
- 环境变量配置: 支持通过环境变量和命令行参数配置
- 健康检查端点: 提供 /health 接口用于服务检活
- PID 文件管理: 自动管理服务进程 ID
安装部署
本地开发安装
# 克隆项目
git clone <repository-url>
cd subapp-deployer
# 安装依赖
npm install
# 本地运行(开发模式)
npm run dev
# 本地运行(生产模式)
npm run prod全局安装 CLI 工具
# 在项目根目录执行
npm install -g .
# 然后可以在任何位置使用
nuwax-file-server --help系统要求
- Node.js >= 22.0.0(ES Module 原生支持)
- zip/unzip 工具(用于项目打包)
- pnpm(推荐)或 npm/yarn
CLI 命令
nuwax-file-server 提供以下 CLI 命令:
基本命令
# 启动服务(默认使用 env.production 配置)
nuwax-file-server start
# 启动服务(指定环境)
nuwax-file-server start --env development
nuwax-file-server start --env production
nuwax-file-server start --env test
# 停止服务
nuwax-file-server stop
# 强制停止服务
nuwax-file-server stop --force
# 重启服务
nuwax-file-server restart
# 查看服务状态
nuwax-file-server status高级选项
# 指定端口启动
nuwax-file-server start --port 8080
# 指定配置文件
nuwax-file-server start --config /path/to/config.json
# 组合使用
nuwax-file-server start --env development --port 3000使用 npm scripts
# 启动服务
npm run cli:start
npm run cli:start:dev # 开发环境
npm run cli:start:prod # 生产环境
npm run cli:start:test # 测试环境
# 停止服务
npm run cli:stop
# 重启服务
npm run cli:restart
# 查看状态
npm run cli:status环境变量配置
完整的环境变量配置说明请参考:环境变量配置文档
快速使用示例
# 使用 env.production 默认配置(推荐)
nuwax-file-server start --env production --port 60000
# 自定义路径配置(根据实际需求删减)
nuwax-file-server start --env production --port 60000 \
PROJECT_SOURCE_DIR=/data/projects \
DIST_TARGET_DIR=/var/www/html \
UPLOAD_PROJECT_DIR=/data/uploads核心路径变量
| 环境变量 | 说明 |
| ------------------------ | ------------------------------ |
| INIT_PROJECT_DIR | 初始化工程目录 |
| UPLOAD_PROJECT_DIR | 上传的项目压缩包路径 |
| PROJECT_SOURCE_DIR | 项目源文件路径 |
| DIST_TARGET_DIR | 构建产物目标目录(nginx 加载) |
| LOG_BASE_DIR | 日志基础目录 |
| COMPUTER_WORKSPACE_DIR | computer 工作目录 |
| COMPUTER_LOG_DIR | computer 日志目录 |
完整配置项和场景示例请参阅:环境变量配置文档
命令行覆盖
# 端口优先级: 命令行 > 环境变量 > 默认值
nuwax-file-server start --env production --port 8080健康检查端点
服务提供 /health 端点用于健康检查和监控。
请求
curl http://localhost:60000/health响应
{
"status": "ok",
"timestamp": 1738600000000,
"uptime": 3600,
"version": "1.0.0",
"platform": "darwin",
"nodeVersion": "v22.0.0",
"pid": 12345,
"memory": {
"heapUsed": 25.5,
"heapTotal": 50.0,
"rss": 100.0,
"external": 5.0
},
"env": "production"
}响应字段说明
| 字段 | 类型 | 说明 | | ----------- | ------ | --------------------------------- | | status | string | 服务状态,ok 表示正常 | | timestamp | number | 当前时间戳(毫秒) | | uptime | number | 服务运行时间(秒) | | version | string | 服务版本号 | | platform | string | 操作系统平台 (darwin/linux/win32) | | nodeVersion | string | Node.js 版本 | | pid | number | 进程 ID | | memory | object | 内存使用情况(MB) | | env | string | 当前环境 |
跨平台说明
Windows
- PID 文件存储在
%TEMP%\nuwax-file-server\ - 进程停止使用
taskkill /F /PID命令 - 路径分隔符使用反斜杠
\
Linux/macOS
- PID 文件存储在
/tmp/nuwax-file-server/ - 进程停止使用 kill 信号 (SIGTERM/SIGKILL)
- 路径分隔符使用正斜杠
/
通用
- 所有路径使用
path.join()处理 - 使用
os.tmpdir()获取临时目录 - 使用
cross-spawn执行 shell 命令 - 使用
tree-kill杀死进程树
pnpm 磁盘空间优化
本项目自动为所有创建、上传或复制的项目注入优化的 .npmrc 配置文件,以优化 pnpm 的磁盘空间使用。
自动优化
在以下操作中,系统会自动为项目创建 .npmrc 配置文件:
- 创建项目 (
/create-project) - 上传项目 (
/upload-project) - 复制项目 (
/copy-project)
检查磁盘使用
# 自动检测当前环境配置
npm run pnpm:check
# 或指定特定环境
npm run pnpm:check:dev # 开发环境
npm run pnpm:check:prod # 生产环境
npm run pnpm:check:test # 测试环境
# 或手动指定目录
bash scripts/pnpm-check.sh /path/to/projects清理未使用的包
# 立即清理
npm run pnpm:prune
# 查看日志的清理(推荐)
npm run pnpm:prune:log定时清理(自动集成)
定时任务已集成到主应用,随应用启动自动运行,通过环境变量配置:
# docker-compose.yml 或 .env 文件
environment:
PNPM_PRUNE_ENABLED: "true" # 启用定时清理(默认 true)
PNPM_PRUNE_SCHEDULE: "0 2 * * 0" # 每周日凌晨 2 点
PNPM_PRUNE_TIMEZONE: "Asia/Shanghai" # 时区(默认 Asia/Shanghai)
PNPM_PRUNE_RUN_ON_START: "false" # 启动时立即执行(默认 false)常用时间配置:
"0 2 * * 0" # 每周日凌晨 2 点
"0 3 * * *" # 每天凌晨 3 点
"0 2 1 * *" # 每月 1 号凌晨 2 点
"0 */6 * * *" # 每 6 小时预期效果
- 磁盘空间节省 50-70%(多项目共享依赖)
- 安装速度提升(使用国内镜像)
- 完全自动化,无需手动配置
- 定期清理,保持 store 整洁
故障排除
服务无法启动
- 检查端口是否被占用
- 检查日志文件权限
- 检查环境配置文件是否存在
# 查看详细日志
nuwax-file-server start --env development服务无法停止
# 使用强制停止
nuwax-file-server stop --force
# 手动查找并停止进程
ps aux | grep nuwax-file-server
kill -9 <pid>健康检查失败
- 检查服务是否正在运行
- 检查端口是否正确
- 检查防火墙设置
# 查看服务状态
nuwax-file-server status
# 测试健康检查
curl http://localhost:60000/health开发指南
添加新命令
在 src/cli.js 中使用 commander 定义新命令:
program
.command("newcommand")
.description("新命令描述")
.option("--option", "选项描述")
.action((options) => {
// 命令逻辑
});添加新配置项
- 在
env.development/env.production/env.test中添加环境变量 - 在
config/index.js中读取配置 - 在文档中说明
许可证
ISC
