# rnx **Repository Path**: MM-Q/rnx ## Basic Information - **Project Name**: rnx - **Description**: 简单高效的跨平台任务编排工具 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-01-27 - **Last Updated**: 2026-06-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: 任务编排, 运行器 ## README
# Rnx [![Go Version](https://img.shields.io/badge/Go-1.25+-blue.svg)](https://golang.org) [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20Darwin-lightgrey.svg)](https://gitee.com/MM-Q/rnx) *简单高效的跨平台任务编排工具*
## 📖 简介 rnx 是一个 TOML 驱动的任务编排工具,通过配置文件定义、管理和执行任务,支持依赖管理、变量替换、平台感知等特性。定位类似 `make`/`just`/`task`,但提供更丰富的内置功能。 ## ✨ 特性 - **TOML 即代码** — 用纯配置文件定义任务,无需学习 DSL - **依赖管理** — 自动拓扑排序,`depends_on` 声明依赖(执行前),`run_after` 声明后继(执行后) - **变量系统** — 全局/任务两级变量空间,`{{var}}` 引用,`@command` 动态取值,循环依赖检测 - **跨平台** — Windows/Linux/macOS,可按任务指定运行平台 - **并/串行双模式** — 依赖驱动的串行执行 + 独立配置的并行执行(信号量限流) - **环境变量** — 全局和任务级环境变量,支持变量引用 - **严格校验** — 运行前校验所有配置(变量引用、命令安全、Shell 语法、依赖完整性) - **模板初始化** — `rnx init` 快速生成配置模板 ## 📦 安装 ```bash # 方式一:Go 安装 go install gitee.com/MM-Q/rnx/cmd/rnx@latest # 方式二:源码构建 git clone https://gitee.com/MM-Q/rnx.git cd rnx python3 build.py # 构建 python3 build.py -s -ai -f # 安装到系统路径 ``` ## 🚀 快速开始 ### 1. 初始化 ```bash rnx init # 默认模板(def) rnx init --type dev # 开发模板 rnx init --list # 列出所有模板 rnx init -s <文件> # 安装为用户自定义模板 rnx init -d <模板名> # 删除已安装的用户模板 ``` ### 2. 配置 创建 `Rnx.toml`: ```toml [global] work_dir = "." timeout = "30s" [task.build] desc = "构建程序" cmds = ["go build -o app main.go"] [task.test] desc = "运行测试" cmds = ["go test ./..."] depends_on = ["build"] [task.deploy] desc = "部署" cmds = ["./deploy.sh"] depends_on = ["test"] platform = ["linux"] ``` ### 3. 执行 ```bash rnx -l # 列出所有任务 rnx -r build # 执行构建 rnx -r test # 自动先执行 build,再执行 test rnx check # 校验配置文件 rnx fmt # 格式化配置文件 ``` ## 📚 核心概念 ### 变量替换 支持 `{{变量名}}` 语法,在命令和环境变量中引用: ```toml [global.vars] app_name = "myapp" version = "1.0.0" [task.build] cmds = ['echo "构建 {{app_name}} v{{version}}"'] ``` **变量优先级**:任务变量 > 全局变量(同名覆盖)。 **动态变量**:`@` 开头的值会作为命令执行,输出作为变量值: ```toml [global.vars] git_commit = "@git rev-parse --short HEAD" build_time = "@date +%Y%m%d%H%M%S" ``` ### 环境变量 环境变量值中可引用变量,实现动态配置: ```toml [global.vars] version = "1.0.0" [global.envs] APP_VER = "版本: {{version}}" [task.build] envs = { "BUILD_DIR" = "build-{{version}}" } cmds = ['echo "$BUILD_DIR"'] ``` > 环境变量**不支持**引用自己或其他环境变量,只能引用变量。 ### 依赖管理 通过 `depends_on` 声明依赖(执行前),通过 `run_after` 声明后继(执行后),自动拓扑排序: ```toml [task.setup] cmds = ["echo 初始化"] [task.build] desc = "主任务" depends_on = ["setup"] # setup 先执行 run_after = ["notify"] # notify 后执行 [task.notify] cmds = ["echo 构建完成,发送通知"] [task.test] depends_on = ["init"] # 与 build 并行 ``` ### 平台控制 ```toml [task.build_linux] cmds = ["go build -o app"] platform = ["linux"] # 仅在 Linux 上执行 ``` 不设置 `platform` 则默认支持所有平台。 ### 并行执行 在 `[global]` 中配置并行任务列表,使用 `-P` 执行: ```toml [global] parallel_tasks = ["build_frontend", "build_backend"] ``` ```bash rnx -P # 并行执行所有配置的并行任务 ``` ## 🛠️ 配置文件名 查找优先级:`Rnx.toml` > `rnx.toml` > `task.toml` > `Task.toml` ## 📖 任务文件规范 详细的配置规范请参考 [docs/任务文件规范.md](docs/任务文件规范.md)。 ## 📄 许可证 MIT — 详见 [LICENSE](LICENSE)。 ---

如果 rnx 对您有帮助,请给我们一个 ⭐️

项目主页 · 问题反馈