Just 又一个自动化工具
2025-03-13 本文已影响0人
老瓦在霸都
Just 是什么
Just 就是一个命令执行工具,旨在简化项目中特定命令的管理和执行。 通过在名为 justfile 的文件中使用类似 make 的简单语法定义这些被称为“配方”的命令,您可以简化重复性任务,并在项目中保持一致性。
主要特点:
-
跨平台支持: Just 兼容 Linux、macOS 和 Windows,确保在不同操作系统上具有一致的行为。
-
灵活的语法:
justfile允许定义变量、处理命令行参数等,为任务的指定和执行提供了灵活性。
Just 示例
-
基本配方(Recipe):
定义一个简单的命令来清理构建产物:
# justfile clean: rm -rf build/
在终端中运行 just clean 将执行 rm -rf build/ 命令,删除 build 目录。
-
带变量的配方(Recipe):
使用变量来指定编译器标志:
# justfile CFLAGS := "-Wall -O2" build: gcc {{CFLAGS}} main.c -o main
在此,CFLAGS 被定义为所需的编译器标志。build 配方在编译 main.c 时使用这些标志。
-
带命令行参数的配方(Recipe):
在配方中处理命令行参数:
# justfile greet name: echo "Hello, {{name}}!"
执行 just greet Alice 将输出:
Hello, Alice!
-
跨平台配方(Recipe):
定义一个可在不同操作系统上运行的配方:
# justfile python_dir := if os_family() == "windows" { "./.venv/Scripts" } else { "./.venv/bin" } python := python_dir + if os_family() == "windows" { "/python.exe" } else { "/python3" } bootstrap: if test ! -e .venv; then {{python}} -m venv .venv; fi {{python}} -m pip install --upgrade pip
此配方以跨平台的方式设置 Python 虚拟环境,处理 Windows 和类 Unix 系统之间的差异。
Just 与 Make 相比有什么优劣
Just 和 Make 确实有很多相似之处,但 Just 主要针对更现代、更简洁、更易用的任务管理需求,适用于各种项目类型,而不仅仅是编译代码。以下是 Just 相比 Make 的几个优势:
✅ Just 的优势
1. 语法简单,易于上手
-
justfile语法比Makefile更简单,无需学习 Make 复杂的规则(如phony、依赖关系)。 -
示例:
相比之下,Make 需要写成:# justfile build: gcc main.c -o main# Makefile build: main.c gcc main.c -o main
2. 不限定用途,不仅仅是编译
- Make 主要用于编译,而 Just 更像一个通用的任务运行器,适用于自动化开发任务(如启动服务器、运行脚本、清理日志)。
-
示例:
# justfile start-server: python server.py
3. 无需 TAB,避免 Makefile 的常见坑
- Makefile 里的缩进必须是 Tab,不然容易报错,Just 则不受这个限制,允许用空格,避免格式错误。
4. 支持命令行参数
- Make 的参数处理较麻烦,Just 直接支持:
-
示例(传递参数):
运行:greet name: echo "Hello, {{name}}!"
输出:just greet AliceHello, Alice! - 而 Make 需要使用
$(name),调用方式较繁琐。
5. 支持变量与字符串插值
- 变量在 Just 里更直观:
-
示例:
CFLAGS := "-Wall -O2" build: gcc {{CFLAGS}} main.c -o main
6. 支持跨平台
- Make 主要在 UNIX 环境下工作,在 Windows 上经常有兼容性问题。
- Just 可以在 Windows / Linux / macOS 直接运行,无需额外配置。
7. 支持颜色输出、错误处理
- Just 的错误信息更清晰,并且可以更方便地输出彩色终端日志,适合 DevOps 或 CI/CD 自动化任务。
Just 的不足
-
不能自动管理依赖
Make 可以自动检查文件修改时间,决定是否重新编译,而 Just 只是一个任务运行器,不具备依赖追踪功能。 -
生态不如 Make 丰富
Make 经过几十年发展,已有大量插件和优化,Just 还在发展阶段。
结论
如果你在编译 C/C++ 代码,Make 仍然是首选。
但如果你需要一个简单、易用、适用于各种任务的自动化工具,Just 可能是更好的选择!