ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

just 命令运行器完整教程:从第一个任务到跨平台 justfile 快速指南

just 命令运行器完整教程:从第一个任务到跨平台 justfile 快速指南 just 命令运行器完整教程从第一个任务到跨平台 justfile 快速指南【免费下载链接】just Just a command runner项目地址: https://gitcode.com/GitHub_Trending/ju/just上次我帮同事 review对方光是在 wiki 里翻怎么跑测试、怎么出包就花了十分钟——命令散落在文档、shell 历史和每个人脑子里是多数团队的日常。just解决的就是这件事它是一个命令运行器command runner把项目里常用的命令存进一个叫justfile的文件之后你只需要敲just 任务名就能执行整段流程。可以把它理解成项目的点菜单每个食谱名就是一道菜下面缩进的内容就是做法。装好 just各发行版包管理器都有它Rust 环境里也可以cargo install just在项目根目录建一个 justfile 就能开工。先跑起来下面这份 justfile 不到 10 行已经覆盖了最核心的几个语法点PYTHON : python3 test: echo 开始跑测试 {{PYTHON}} -m pytest -q第一行是变量赋值把字符串python3绑到PYTHON上以后换解释器只改这一处。test:定义了一个食谱下方缩进4 个空格或 Tab 都可以的行会按顺序执行。echo开头的表示不打印这条命令本身只留输出去掉前缀just 会先回显再执行。{{PYTHON}}是插值运行时替换成变量的实际值。在项目根目录执行效果如下$ just test 开始跑测试 3 passed in 0.42s这就是最小单元。后面所有能力都是在这个骨架上加料。用场景解决常见问题把测试命令变成一行参数场景测试分了单测和 e2e 两套你希望just test e2e只跑 e2e。just 允许直接在食谱名后面声明参数还能给默认值test targetall: echo 跑 {{target}} 用例 pytest -m {{target}} -q效果不带参数时just test跑全量just test e2e只跑 e2e。参数以*开头如run *args:则变成变长参数一行命令把多个参数原样透传给脚本。给构建任务加依赖链场景打包前必须先构建版本号还想自动取自 git 提交。依赖写在食谱名后空格分隔反引号可以直接执行 shell 命令并把结果存进变量VERSION : git describe --tags --always package: build tar -czf dist/app-{{VERSION}}.tar.gz build/效果just package会先跑完 build 再打 tar 包文件名里的版本号永远是最新提交。两个实用细节同一次运行里相同参数的依赖只执行一遍多个食谱都依赖 build 也不会重复构建命令前加-即使它失败也会继续往下走适合清理类步骤。让 .env 自动接管环境变量场景数据库地址、端口、发布标签这些值随环境变化硬编码进 justfile 很难受每次手动 export 又烦。just 能直接加载项目里的.env文件set dotenv-load serve: ./server --db $DATABASE_ADDRESS --port $SERVER_PORT效果只要.env里写了DATABASE_ADDRESS和SERVER_PORTjust serve就能用命令行里按 shell 变量$NAME引用。若某个 just 变量必须传给子进程赋值前加export想全部导出则写set export。给长任务起短别名场景integration-test敲起来费劲你想两个字符搞定alias t : test alias i : integration-test效果just t与just test完全等价别名不会出现在任务列表里列表保持干净。需要更强能力时遇到 Windows 同事跑不动没有 sh→ 单独声明一份 Windows 用的 shell一行即可set windows-shell : [powershell.exe, -NoLogo, -Command]遇到要在任务里写多行逻辑遍历文件、聚合结果→ 用 shebang 食谱食谱体本身用任意语言写比如 Pythoncheck-deps: #!/usr/bin/env python3 print(依赖检查通过)遇到 justfile 膨胀到两百行以上 → 用mod按目录拆分mod deploy会加载 deploy.just 或 deploy/ 子目录子文件里的食谱用模块名加双冒号调用例如just deploy::production。遇到需要按平台走不同分支 → 变量赋值里直接写条件表达式路径、命令都能分平台取值BIN_DIR : .venv/ / (Scripts if os_family() windows else bin)遇到要清洗字符串或安全传参 → 内置函数够用quote()做 shell 转义、replace()替换字符串、env_var_or_default()取带兜底值的环境变量examples 目录下的 cross-platform.just 里有整套跨平台取法的现成写法。完整做一个小案例拿最常见的 Python 服务场景串起来建虚拟环境、跑测试、出包。完整 justfile 分两段看前一半是设置与变量set shell : [sh, -c] set windows-shell : [powershell.exe, -NoLogo, -Command] set dotenv-load VENV : .venv/ / (Scripts if os_family() windows else bin) PYTHON : VENV / (python.exe if os_family() windows else python3)/是路径拼接操作符所以PYTHON在两个平台上都会拼出正确的解释器路径。后一半是任务本身bootstrap: {{PYTHON}} -m venv .venv {{VENV}}/pip install -r requirements.txt test: bootstrap {{PYTHON}} -m pytest tests/ -q release: test echo 以 $APP_TAG 出包 ./scripts/pack.sh使用顺序很直白just bootstrap初始化一次just test日常验证just release出包APP_TAG写在.env里即可。不放心执行顺序时just --dry-run release会先打印完整计划不动手just --verbose则给出更细的执行信息排错基本靠这两招。这份配置是项目自带 examples/cross-platform.just 的精简版想要带依赖锁定的完整版可以直接抄它。just 的定位很清楚它不是构建系统只是让项目里要跑的命令变得可见、可记、谁都能跑。从一个 test 食谱起步把散落的命令一个个搬进来就行。更完整的语法细节看 README.md即官方手册另有中文版 README.中文.mdexamples/ 目录里还有各类场景模板其中 examples/kitchen-sink.just 把所有特性汇总在一份文件里适合当速查表。【免费下载链接】just Just a command runner项目地址: https://gitcode.com/GitHub_Trending/ju/just创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表