justfile 快速指南:5 分钟把常用命令变成 recipe
2026/9/18 3:46:33 网站建设 项目流程

justfile 快速指南:5 分钟把常用命令变成 recipe

【免费下载链接】just🤖 Just a command runner项目地址: https://gitcode.com/GitHub_Trending/ju/just

你在一个仓库里干活,构建命令是cargo build --release && cp target/release/app dist/,每次都要手敲一遍,还总差一点。写进 README 也没人看。just 就是干这个的:把命令写进项目根目录的 justfile,团队里所有人统一跑just build就行。

just 是什么?和 Makefile 有什么区别

just 是一个轻量级命令运行器(command runner):你在 justfile 这个任务脚本里定义一个个 recipe,然后用just <recipe名>一条命令执行,不用背参数顺序。

选择优点代价
Makefile系统自带、生态成熟Tab 缩进限制多,报错信息不友好
纯 Shell 脚本灵活度最高要自己写 CLI、做任务分发
npm scripts前端生态顺手绑定 Node,非 JS 项目用不上
just语法简单、报错可读,自带参数与跨平台需要单独安装

🔧 三分钟上手:justfile 安装与第一个任务

先装 just:

cargo install just # macOS 也可以 brew install just

在项目根目录建一个 justfile,写第一个 recipe:

hello name="world": @echo "hello, {{name}}"

然后运行:

$ just hello hello, world

装、写、跑,一个最小闭环就通了。想看到所有可用任务,随时just --list

一个例子读懂语法

下面是一个小型 Rust 项目的完整 justfile,覆盖变量、依赖、参数和命令前缀:

BIN_NAME := "demo" OUT_DIR := "dist" / BIN_NAME # 反引号里执行命令,输出作为变量值 GIT_SHA := `git rev-parse --short HEAD` test *flags="--verbose": cargo test {{flags}} # build 依赖 clean,先跑 clean 再跑自己的命令 build: clean cargo build --release mkdir -p {{OUT_DIR}} cp target/release/{{BIN_NAME}} {{OUT_DIR}}/ clean: @cargo clean @echo "构建产物已清理" # - 前缀:这一步失败也不中断 publish: build -curl -fsS https://example.com/notify

对着它看这张速查表:

写法含义
VAR := "值"字符串变量赋值
SHA := \命令``执行命令,把输出存进变量
"dist" / BIN_NAME路径拼接
b: ab 依赖 a,a 先执行
name="world"带默认值的参数
*flags变长参数
@命令只显示输出,不显示命令本身
-命令该步失败也继续往下跑

⚡ just 特性速查

内置函数

函数作用例子
os()当前系统名返回linux/windows
env_var("NAME")读环境变量env_var("HOME")
quote(s)转成 shell 安全字符串quote("a b")
file_name(p)取路径里的文件名file_name("/a/b/c.txt")c.txt

if/else 条件分支

PYTHON := if os() == "windows" { ".venv/Scripts/python" } else { ".venv/bin/python" }

跨平台构建脚本的 shell 设置

set shell := ["sh", "-c"] set windows-shell := ["powershell.exe", "-NoLogo", "-Command"]

dotenv 加载

set dotenv-load # 自动读取当前目录的 .env deploy: curl https://api.{{env_var("STAGE")}}.example.com

alias 与 mod

alias t := test # 以后跑 just t 即可 mod deploy/aws # 引入 deploy/aws.just,可用 deploy::aws::xxx 调用

完整写法可以看 examples/ 里的 kitchen-sink 示例。

团队落地建议:justfile 怎么组织

  1. 文件按固定顺序排:set设置 → 变量 → alias → recipe,高频 recipe 放最上面。
  2. 命名:recipe 用小写加连字符(如build-docs),不想暴露的内部 helper 用_开头。
  3. 排查先看清单:just --list列出全部任务。
  4. 想看某任务会执行什么但不真跑:just --dry-run build
  5. 想确认变量最终取到什么值:just --evaluate会展开全部变量。

⚠️ 常见坑

  1. 缩进混用空格和 Tab原因:缩进不一致会直接报错;解法:全文统一 2 个空格,别中途切换。
  2. 字符串里带引号等特殊字符原因:普通字符串容易把解析器搞乱;解法:用quote()转义,或多行场景用三引号字符串。
  3. Windows 上行为不同原因:shell 和路径分隔符都和 Linux/macOS 不一样;解法:文件顶部设set windows-shell,需要分支的地方用os()判断。

进阶阅读

  • 官方文档:中文文档、英文文档
  • 示例集合:examples/,从跨平台 Python 项目到 pre-commit 工作流都有
  • 想抠语法细节:src/parser.rs

把你今天敲得最勤的那条命令变成 recipe,剩下的交给just

【免费下载链接】just🤖 Just a command runner项目地址: https://gitcode.com/GitHub_Trending/ju/just

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询