资讯动态

just 命令执行器版本演进全览:从 CHANGELOG 解读 1.58.0 的核心能力

发布时间:2026/9/30 6:55:55 来源:尧图企业网站定制
CLI开发工具任务调度【免费下载链接】just Just a command runner项目地址https://gitcode.com/GitHub_Trending/ju/just点击查看免费下载本文以仓库根目录下的 CHANGELOG.md 为主体线索系统梳理 justJust a command runner从 0.3.1 到 1.58.0 的功能演进脉络并结合 src/attribute.rs、src/function.rs、src/setting.rs 等源码文件与 tests 测试用例为读者呈现一张可检索、可引用的 just 能力全景图。读完本文你将掌握 just 的配方语法、属性与设置系统、内置函数库、模块机制、缓存配方等核心特性并理解这些特性各自的引入版本与使用前提。当前版本与发布节奏根据 Cargo.toml 中version 1.58.0的声明与 CHANGELOG.md 顶部条目当前仓库对应版本为1.58.0发布于 2026-08-03。just 的发布节奏大致为每月 12 个版本且遵循语义化版本规范0.x阶段2017-12 至 2022-02频繁调整语法与行为1.0.0于 2022-02-22 发布后保持向后兼容的增量演进。值得关注的两个工程约束最低支持的 Rust 版本MSRV在 1.54.0 版本中提升至1.89.0Cargo.toml 中rust-version 1.89.0与之对应并在 CHANGELOG.md 中记录了多次 MSRV 抬升1.46.0 → 1.74 → 1.77 → 1.89.0CI 会对该版本进行强制检查。许可协议自 0.3.4 起项目采用 CC0 许可见 LICENSE。核心语法配方recipe与依赖justfile 的核心单元是配方recipe语法受 make 启发但定位是命令执行器而非构建系统因此不需要.PHONY之类的特殊声明。项目自身的 justfile 是很好的综合示例[group: test] test: (watch ltest --tests --all --all-targets) [group: check] ci: test build-book forbid cargo lclippy --all --all-targets --all-features -- --deny warnings cargo fmt --all -- --check演进中的关键能力括号内为引入版本配方别名alias0.4.0 引入例如 justfile 中的alias t : test别名目标随后扩展为可指向子模块配方1.40.0。向依赖传递参数0.5.2 允许foo: (bar arg)形式的参数化依赖。配方路径语法1.22.0 起配方可被foo::bar形式调用。前置依赖first/默认配方0.9.3 起空参数调用时运行首个配方1.17.0 的Justfile::first → Justfile::default重构使其语义更明确。并行依赖[parallel]1.42.0 引入可让依赖并行执行1.56.0 的--jobs选项与num_jobs()函数可进一步限制并行度。后续依赖subsequents0.9.9 引入配方末尾的依赖会在此配方之后立即执行。配方守卫guard?标记1.47.0 引入守卫 sigil。错误抑制-前缀0.8.0 起配方行前加-可忽略其失败。 静默前缀早期版本引入与-可在任意顺序组合0.10.6。配方参数Parameters体系参数体系是 just 与 make 差异最大的部分之一CHANGELOG 记录了以下演进导出参数$前缀0.8.6 允许foo $NAME:将参数导出为环境变量。可变参数0.6.0 引入接受零或多个参数的 variadic 参数*ARGS与ARGS1.53.0 起可变参数在set lists下保留为字符串列表。默认值任意表达式0.4.0 允许默认参数为任意表达式1.36.0 起默认值可引用更早声明的参数。参数遮蔽shadowing1.12.0 允许配方参数遮蔽全局变量。位置参数模式0.9.1 的positional-arguments设置与 1.29.0 的[positional-arguments]属性可控制$1、$2等位置变量。命令行选项式参数[arg]1.46.0 允许配方以--long/-x选项形式接收参数随后 1.55.0 大幅扩充[arg(short)]默认取参数名首字符、[arg(multiple)]允许重复、变参可作选项、短选项可合并-abc1.56.0 加入[arg(min)]与[arg(max)]约束参数数量1.57.0 禁止[arg(flag)]与[arg(pattern)]混用。参数正则约束1.45.0 的[arg(pattern)]可要求参数匹配正则表达式。帮助文本1.46.0 的--usage子命令结合[arg(help)]可为每个参数生成帮助信息。属性Attributes系统从枚举看全貌属性以[name]或[name: value]形式写在配方、别名、模块或赋值之前。在 src/attribute.rs 中Attribute枚举完整定义了当前支持的 40 种属性这里结合 CHANGELOG 中的引入版本汇总类别属性说明引入版本平台门控[unix][linux][macos][windows][freebsd][openbsd][netbsd][dragonfly][android]仅在此平台启用配方unix/windows 早期即有BSD 三兄弟 1.47.0android 1.50.0文档与分组[doc][group][private][no-quiet]控制文档注释、分组、可见性、输出doc 1.27.0模块 1.32.0group 1.27.0private 1.9.0运行控制[no-cd][working-directory][confirm][exit-message][no-exit-message][parallel][continue]工作目录、确认提示、退出消息、并行、信号续跑no-cd 1.9.0working-directory 1.38.0confirm 1.17.0exit-message 1.39.0continue 1.54.0脚本类[script][extension][shell]shebang 脚本配方及其解释器、文件扩展名extension 1.32.0script 1.32.01.44.0 稳定shell 1.52.0参数类[arg][positional-arguments]命令行选项参数见上文参数章节环境类[env][export]相关为配方注入环境变量env 1.47.01.51.0 允许表达式元数据[metadata][default]附加元数据标记默认配方metadata 1.42.0default 1.43.0缓存[cache]缓存脚本配方输出1.54.0不稳定特性时间戳[timestamp][timestamp: format]打印配方运行时间戳可选自定义格式timestamp 1.28.0format 参数 1.58.0源码层面的几个实现细节值得注意AttributeKind::argument_range()src/attribute.rs定义了每种属性允许的位置参数个数例如[arg]、[extension]、[group]、[working-directory]恰好 1 个[env]恰好 2 个[confirm]/[doc]/[timestamp]0 或 1 个。AttributeKind::accepts_expressions()src/attribute.rs限定仅[confirm]、[doc]、[env]、[timestamp]、[working-directory]接受任意表达式参数其余属性只接受字符串字面量。平台门控属性在is_enabler()src/attribute.rs中被集中归类其求值逻辑用于决定配方是否启用。1.38.0 起禁止重复声明不可重复属性1.54.0 禁止重复属性键1.56.0 允许所有条目使用条件属性if表达式驱动的[doc]等。设置Settings系统set指令全景justfile 通过set name : value调整解析与执行行为。在 src/setting.rs 中可看到完整的Setting枚举共 28 项设置结合 CHANGELOG 的引入版本整理设置说明引入版本shell指定执行配方的 shell 与参数0.5.00.4.2 曾作 CLI 标志windows-shell/windows-powershellWindows 平台 shell前者 1.2.0后者 0.10.6windows-shell 于 1.56.0 标记弃用见左dotenv-load/dotenv-filename/dotenv-path/dotenv-required/dotenv-override/dotenv-command环境文件加载行为0.8.7 / 1.16.0 / 1.16.0 / 1.28.0 / 1.41.0 / 1.54.0export将所有变量导出为环境变量0.8.6fallback未命中配方时回退到父目录 justfile1.7.01.11.0 稳定ignore-comments忽略#注释1.6.01.56.0 起仅作用于脚本配方positional-arguments以$1形式传递位置参数0.9.1tempdir指定临时目录1.7.0allow-duplicate-recipes/allow-duplicate-variables允许重复定义0.11.1 / 1.27.0quiet/no-exit-message静默输出 / 关闭退出消息1.23.0 / 1.39.0script-interpreter脚本配方解释器1.33.0minimum-version声明所需最低 just 版本1.55.0unstable启用不稳定特性1.31.0working-directory全局工作目录1.33.0lazy惰性求值赋值1.47.01.48.0 稳定lists启用列表类型1.53.0guards守卫 sigil1.47.0no-cd不切换配方工作目录1.51.0default-list/default-script默认配方行为相关1.52.0indentation配方缩进风格1.56.0值得注意的语义细节Setting::conflicts()src/setting.rs定义了互斥设置例如no-cd与working-directory不能同时启用dotenv-command与其余 dotenv 系列设置互斥。内置函数库从get()分发看全貌justfile 中的表达式可调用丰富的内置函数。src/function.rs 中的Function::get()定义了完整注册表结合 CHANGELOG 可梳理出几条主线路径与文件absolute_path1.1.0、canonicalize1.24.0、clean/join/parent_directory/file_name/file_stem/extension0.9.6、1.3.0 的/运算符、path_exists1.0.0、read1.39.0、justfile/justfile_directory0.5.4、source_file/source_directory1.27.0、module_file/module_directory1.28.0、module_path1.50.0。目录查询home_directory、config_directory等 XDG 系列1.23.0、cache_directory、runtime_directory1.49.0、invocation_directory0.3.12_native变体 1.13.0。环境env_var/env_var_or_default0.3.5、env1.15.01.53.0 起支持列表、just_executable0.8.6、just_pid1.23.0、just_version1.55.0。字符串处理大小写转换系列0.9.7、1.7.0、trim*0.10.3、replace/replace_regex1.9.0、quote0.10.4、split1.53.01.57.0 起split()按字符切分、len1.58.0、encode_uri_component1.27.0。哈希与随机sha256/sha256_file1.2.0、blake3/blake3_file1.25.0、uuid1.2.0、choose1.27.01.57.0 起空字母表一律报错。运行与环境探测os/arch/os_family0.3.5、num_cpus1.15.0、num_jobs1.56.0、is_dependency1.29.0、recipe_name1.53.0、semver_matches1.16.0、which/require1.39.0、error1.1.0、assert1.27.01.53.0 起消息可省略且可求值、shell1.27.0用于运行外部命令、show1.53.0、bool1.53.0。样式style1.37.01.55.0 起支持 RGB 与固定色。此外函数名支持_dir缩写1.31.0且 1.49.0 起支持用户自定义函数user-defined functions。模块Modules与导入从 1.12.0 的!include指令到 1.18.0 稳定为import path再到 1.19.0 正式引入mod模块just 具备了大型项目的拆分能力模块1.19.0 引入1.31.0 稳定mod foo会查找foo.just或foo/mod.just也允许目录与源文件路径形式1.20.0、1.31.0。可选模块与导入1.21.0 允许可选mod/import1.55.0 的--allow-missing可忽略缺失配方与子模块错误。模块别名1.55.0 引入 module aliases并逐步在--show/--list/--usage/--evaluate中解析别名1.56.0。作用域规则子模块变量不会回退解析到父模块1.56.0 修复[private]模块不出现在--list1.47.0模块可携带[doc]、[group]属性1.32.0、1.33.0。工作目录子模块配方默认在子模块目录下运行1.20.0并经历多轮作用域/工作目录修复1.42.x 系列。列表Lists与惰性求值1.53.0 是功能密度很高的大版本围绕set lists引入了完整的列表类型列表字面量、append/prepend/split/join、与/运算符作用于列表、~/!~正则操作数可为列表、列表可作依赖与参数转发、show()等函数要求set lists、if无else时求值为空列表、bool()与否定运算符!。配套的 1.56.0 修复包括is_dependency()、[confirm]表达式中的列表语义以及 1.57.0 的split()按字符切分。惰性求值方面1.47.0 的set lazy使未使用赋值不再被求值1.48.0 稳定1.47.1 增加eager关键字强制求值1.57.0 修复了用户自定义函数中惰性赋值被重复求值的问题。求值顺序在 1.56.0 中改为依赖顺序dependency order。缓存配方Cached Recipes1.54.0 引入的[cache]属性配合[script]脚本配方可将配方输出缓存到.justcache目录是面向构建加速的不稳定特性缓存键基于配方正文、输入文件、输出文件、工作目录、额外键等因素计算1.54.0 系列 PR。just --clean子命令可清除缓存条目支持按配方/模块路径过滤--no-cache可临时禁用缓存。缓存实现可参考 src/cache.rs、src/cache_entry.rs、src/cache_key.rs 与 tests/cache.rs。测试cache_attribute_is_unstabletests/cache.rs验证了未启用--unstable时会报错body_change_invalidates_cachetests/cache.rs验证正文变更会使缓存失效并重新执行。命令行界面子命令与选项演进CHANGELOG 同时记录了 CLI 的持续演化子命令--init0.5.1、--choose0.7.3支持 fzf 等 chooser、--variables0.5.9、--fmt0.9.51.50.0 稳定、--man1.27.0、--dump --dump-format json0.10.4JSON 1.15.0 稳定、--completions0.5.5支持 bash/zsh/fish/powershell/elvish/nushell、--command0.9.3、--changelog0.10.0、--evaluate0.9.11.49.0 起支持路径与--evaluate-format、--show、--usage1.46.0、--clean1.54.0、--request1.38.0、--one1.36.0、--timestamps/--timestamp-format1.28.0、--time1.49.0、--list-submodules1.28.0、--groups1.27.0、--global-justfile1.27.0、--allow-missing1.38.0、--dotenv-command1.54.0、--jobs1.56.0、--justfile-name1.49.01.58.0 起接受多个逗号分隔值、--tempdir1.41.0、--alias-style1.39.0、--default-list1.52.0、--complete-aliases1.49.0。环境变量配置1.27.0 起部分 CLI 选项可通过环境变量设置如JUST_CYGPATH1.42.01.30.0 扩展了可配置项范围。补全1.48.0 切换到动态补全引擎补全脚本随 crate 发布仓库中 completions 目录bash 补全注册脚本见 etc/completion-registration-script.bash。稳定性与兼容性管理CHANGELOG 中反复出现的 Stabilized 与 Breaking Changes to Unstable Features 小节体现了项目的特性治理风格新特性先以不稳定形式落地需--unstable或set unstable成熟后稳定化已稳定--fmt1.50.0、惰性求值1.48.0、模块1.31.0、[script]1.44.0、JSON dump1.15.0、fallback1.11.0、--summary相关早期。重大行为变更赋值在 0.4.3 弃用、0.9.0 变为硬错误统一为:dotenv-load默认值在 0.11.0 改为 falsefallback默认值在 1.6.0/1.7.0/1.9.0 间多次调整。文本格式format strings1.44.0 引入f{...}格式字符串用{{…}}双花括号表示字面量花括号1.58.0 修正了格式化时插值表达式周围空格的处理。参考与延伸阅读版本历史仓库根目录 CHANGELOG.md本文的事实主源用户文档英文手册 book/en、中文手册 book/zh以及 README.md 与 README.中文.md语法规范GRAMMAR.md核心实现src/attribute.rs、src/setting.rs、src/function.rs、src/parser.rs、src/lexer.rs示例配方examples/含 kitchen-sink、cross-platform、rule124 等与项目自身的 justfile集成测试tests/覆盖属性、模块、列表、缓存、补全、错误消息等主题补全脚本completions/ 与 contrib/just.sh以上功能与版本号均可在 CHANGELOG.md 中逐一核对源码层面的行为说明以对应.rs文件为准。若要在自己的项目中使用本文提及的新特性请先确认 just 版本不低于对应引入版本并注意标记为不稳定的特性需要--unstable或set unstable才能启用。赞分享CLI开发工具任务调度【免费下载链接】just Just a command runner项目地址https://gitcode.com/GitHub_Trending/ju/just点击查看免费下载相关推荐VisiData 版本演进全览从 CHANGELOG 解读 v3.x 核心特性、命令行与配置选项VisiData 版本演进全览从 CHANGELOG 解读 v3.x 核心特性、命令行与配置选项 VisiData 是一款在终端中探索与整理数据的多工具数据分析CLI数据可视化从 CHANGELOG 读懂 mamba版本演进、核心架构与关键能力全景解析从 CHANGELOG 读懂 mamba版本演进、核心架构与关键能力全景解析 本技术指南以 mamba 项目根目录 CHANGELOG.md https://包管理器CLI开发工具go-prompt 版本演进全解析从 CHANGELOG 看交互式命令行补全库的核心能力与源码实现go prompt 版本演进全解析从 CHANGELOG 看交互式命令行补全库的核心能力与源码实现 导读 go prompt 是一个受 python prom云原生CLI应用安全上一篇从游戏小白到创作大师HS2-HF_Patch如何重塑你的《Honey Select 2》体验下一篇3个妙招搞定Windows程序启动故障Visual C运行库终极修复方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑