ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

mise tasks 命令全解:列任务、看依赖图、校验与一键添加

mise tasks 命令全解:列任务、看依赖图、校验与一键添加 mise tasks 命令全解列任务、看依赖图、校验与一键添加【免费下载链接】misedev tools, env vars, task runner项目地址: https://gitcode.com/GitHub_Trending/mi/mise本文基于当前仓库docs/cli/tasks.md官方命令参考结合src/cli/tasks/目录下的 Rust 实现源码完整讲解mise tasks命令家族的用法参数含义、子命令行为、JSON 输出结构以及任务发现、过滤、排序、校验的底层机制。读完你可以熟练地用mise tasks ls/info/deps/graph/validate/add/edit管理项目的任务清单并理解每个标志位在源码中的实际作用。命令总览与调用规则mise tasks是 mise 的任务管理入口命令Usage:mise tasks [FLAGS] [TASK] [SUBCOMMAND]Aliases:t、taskEffect:read-only只读不直接修改系统状态add/edit子命令会写配置文件或创建脚本属于显式例外Source code:src/cli/tasks/mod.rs该命令带一个可选的位置参数[TASK]Task name to show info for并内嵌了完整的任务列表参数组。从 mod.rs 的run方法可以看出其分发逻辑输入形态实际执行的子命令mise tasks无参数等价于mise tasks ls列出全部任务mise tasks name等价于mise tasks info name显示该任务详情mise tasks name -Jmise tasks info name --jsonmise tasks ls [flags]显式列出任务flags 会先与主命令上的 flags 合并mise tasks run/add/deps/...对应子命令源码中有两条明确的冲突约束mod.rs列表类参数-g/-l/-x/--all/--hidden等不能与run、deps等子命令混用会报错task list options cannot be used with subcommands指定了[TASK]时若携带非 JSON 的列表参数会报错task list options cannot be used with task info仅允许-J透传给info。info子命令还支持//前缀的 monorepo 任务语法名字以//开头或以 workspace 项目任务形式出现时会切换到TaskLoadContext::all()或按模式加载整个 monorepo 的任务集合再匹配见 info.rs。完整参数说明以下参数同时作用于mise tasks主命令和mise tasks ls子命令二者会自动合并-g/-l互斥其余布尔参数按“或”合并--sort/--sort-order以ls子命令上的值优先见 ls.rs 的 merge 方法。参数说明源码行为-g, --global只显示全局任务如~/.config/mise/tasks/下的过滤条件t.global-l, --local只显示非全局任务与-g互斥过滤条件!t.global-J, --json以 JSON 格式输出走display_json分支-x, --extended显示全部列Name / Aliases / Source / Description默认只输出 Name 和 Description 两列--all加载整个 monorepo 的任务含同级目录默认只加载当前目录层级启用TaskLoadContext::all()--hidden显示隐藏任务hide true不过滤t.hide--name-only每行只输出任务名便于管道给 fzf 等工具与--json/--extended/--usage冲突--no-header不打印表头别名--no-headers传给MiseTable--sort COLUMN按列排序可选值name默认、alias、description、source见 sort 方法--sort-order SORT_ORDER排序方向可选值asc默认、desc—-h, --help打印帮助—另外源码中还定义了隐藏参数--complete为 shell 补全输出名称:描述并对:做转义见 ls.rs和--usage生成 usage spec供补全系统把每个任务当作子命令补全见 display_usage。任务从哪里来发现与合并机制ls.rs 的文档注释说明了任务来源与覆盖规则任务来自配置文件mise.toml的[tasks.name]和任务目录如.mise/tasks、mise-tasks/所有父目录的任务会被合并进列表如果全局目录~/.config/mise/tasks/*和项目目录~/myproject/.mise/tasks/*存在同名任务项目任务会覆盖全局任务。ls的执行流程run 方法值得注意读取Config按--all/补全场景决定是否用 monorepo 全量上下文加载任务依次按--hidden、--local、--global过滤再按--sort排序通过TaskFetcher解析远程任务文件source指向的 URL远程缓存仍受环境变量MISE_TASK_REMOTE_NO_CACHE控制可执行位体检如果一个任务都没有但任务目录中存在非可执行文件会打印警告并给出平台相关的chmod提示Files must be executable to be detected as tasks——这是任务脚本“消失了”时最常见的排查点。JSON 输出可编程的任务清单-J --json输出的每个任务对象包含这些字段display_json{ name: test, aliases: [t], description: Run tests, source: mise.toml, config_sources: [mise.toml, ~/.config/mise.toml], depends: [], depends_post: [], wait_for: [], env: [], dir: resolved/dir/path, hide: false, global: false, raw: false, interactive: false, sources: [], outputs: [], shell: null, quiet: false, silent: false, tools: [], usage: , timeout: null, run: [cargo test], args: [], file: null }其中dir是解析后任务实际运行的目录含继承自task_config.dir的值config_sources记录定义该任务的多个配置文件。info --json额外输出cache与usage_spec两个字段info.rs便于工具消费完整的结构化定义。查看单个任务mise tasks infomise tasks info TASK或mise tasks TASK以人类可读的方式展示任务详情文本模式下的字段区块包括display 方法Task / Aliases / Description / Source基本身份与来源文件Properties当设置了hide、raw、interactive时列出Depends on / Depends post / Directory / Sources / Outputs依赖与路径信息Cache任务启用了缓存时显示enabledFile文件型任务对应的脚本路径Runrun数组中每一行命令Environment Variablesenv与 overlay 环境变量指令Usage Spec由#USAGE指令解析出的参数规范。任务不存在时错误信息会提示用mise tasks ls --all --hidden全量查找info.rs。子命令详解mise tasks run [TASK] [ARGS]...执行任务。参数可转发给任务多个任务之间可用:::分隔见 ls.rs 中为补全生成的说明。任务参数、通配符、并行与执行顺序的完整规则见 docs/tasks/running-tasks.md 与 docs/tasks/task-arguments.md。mise tasks add -- ...向本地mise.toml添加任务TOML 任务或加-f创建文件任务。可选参数add.rs参数说明--alias A/-A任务别名可多个--depends T/-d前置依赖可多个--depends-post T任务结束后运行的依赖--dir DIR/-D指定运行目录--file/-f创建文件任务而非 TOML 任务--hide/-H从mise tasks列表和补全中隐藏--quiet/-q运行前不打印命令--raw/-r直连 stdin/stdout/stderr--sources GLOB/-s任务输入文件通配缓存用--outputs GLOB任务输出文件通配最新时跳过执行--wait-for T/-w与这些并发任务互斥等待--description TEXT描述--run-windows CMDWindows 下的命令--shell SHELL指定 shell--silent/-S不打印命令及其输出示例来自源码 usage 注释mise tasks add pre-commit --depends test --depends render -- echo pre-commit实现细节TOML 分支用toml_edit保留原有文件格式并写入[tasks.name]表随后对该配置执行trustadd.rs--file分支则生成带#!/usr/bin/env bash、#MISE元数据头depends、alias、sources、outputs、hide、raw 等逐项映射和set -euxo pipefail的脚本并自动chmod xadd.rs。mise tasks deps [TASKS]...依赖树可视化。依赖图由depends、depends_post、wait_for三种声明构成run数组里的{ task ... }是执行步骤而非图边不会出现在图中deps.rs。参数说明[TASKS]...只看指定任务不指定则加载整个 monorepo 的任务--compact折叠重复依赖与--dot互斥--dot输出 DOT 格式可用 graphviz 渲染--hidden包含隐藏任务示例mise tasks deps # 所有任务的依赖 mise tasks deps lint test check # 指定任务 mise tasks deps --dot # DOT 格式树形输出形如task1 ├─ task2 │ └─ task3 └─ task4 task5mise tasks edit用$EDITOR编辑任务若任务尚不存在会在任务目录下创建带#!/usr/bin/env bashset -euxo pipefail脚手架的可执行脚本edit.rs。加-p, --path只打印任务文件路径而不开编辑器便于脚本化定位mise tasks edit build mise tasks edit -p test # 仅输出 test 任务的文件路径mise tasks graph [FLAGS][experimental]检查 workspace 项目图需要实验特性开关展示项目及其依赖边--json/-J输出项目图 JSON{ projects: [...] }含 id、root、dependencies、metadata--explain解释每个项目/任务的字段来源provider 与 source例如推断出的 inputs/outputs/cache 建议--no-header不打印表头。实现见 graph.rs默认输出四列表格Project / Root / Dependencies / Metadata。mise tasks ls [FLAGS]独立列出任务参数与主命令一致见上文参数表。注意--sort的取值在源码中定义为name、alias、description、source四个枚举SortColumnalias排序按别名逗号拼接后的字符串比较。mise tasks validate [TASKS]...静态校验任务的常见错误适合放进 CI。参数[TASKS]...只校验指定任务按名称、显示名或别名匹配缺省校验全部--errors-only跳过警告只显示错误--json以 JSON 输出{ tasks_validated, errors, warnings, issues: [{task, severity, category, message, details}] }。存在 error 时进程以非零状态退出Validation failed with N error(s)。检查项覆盖validate.rs 的官方说明与 validate_task 实现循环依赖基于图构建探测环并按规范化的环路径去重报告见 canonical_cycle缺失引用depends/depends_post/wait_for指向不存在的任务通配符依赖跳过静态检查usage spec 解析#USAGE指令或usage字段是否可解析误把指令标记写进usage字段会给出警告timeout 格式必须是可解析的时长别名冲突同一别名被多个任务使用或别名与某任务名重名文件存在性文件型任务的脚本是否存在、是否可执行不可执行给出chmod提示目录模板dir的模板能否渲染、渲染后目录是否存在shell 命令shell指定的绝对路径是否存在glob 模式sources/outputs通配能否编译自动剥离!否定前缀再校验run 条目run数组引用的任务是否存在、脚本条目是否为空完全没有任何可执行内容无 run/file/depends会报no-execution。示例mise tasks validate # 校验全部任务 mise tasks validate build test # 校验指定任务 mise tasks validate --json # JSON 输出 mise tasks validate --errors-only # 只看错误任务运行时注入的环境变量执行任务时mise 会向任务进程注入一组约定环境变量见 docs/tasks/index.md在编写跨任务可复用的脚本时经常用到MISE_ORIGINAL_CWD发起任务时的原始工作目录MISE_CONFIG_ROOT定义该任务的mise.toml所在目录MISE_PROJECT_ROOT定义该任务的项目根monorepo 子项目任务为子项目目录MISE_MONOREPO_ROOTmonorepo 根仅 monorepo 内设置MISE_TASK_NAME/MISE_TASK_DIR/MISE_TASK_FILE当前任务名、脚本所在目录、脚本完整路径MISE_TASK_COLOR任务前缀的 ANSI 颜色序列颜色关闭时为空串可用printf %smessage\033[0m\n $MISE_TASK_COLOR复现一致风格。一个最小实践示例把docs/tasks/index.md的最小任务放进项目然后用本文命令完成“定义 → 查看 → 校验”的闭环# mise.toml [tasks.hello] description Check that task execution works run echo hello from misemise tasks # 列出任务hello 在 Name 列描述在 Description 列 mise tasks -x # 追加 Aliases、Source 两列 mise tasks hello # 等价于 mise tasks info hello mise tasks hello -J # 结构化 JSON 定义 mise tasks ls --name-only | fzf mise tasks validate hello mise run hello # 输出: hello from mise文件型任务的等价写法# mise-tasks/hello #!/usr/bin/env bash #MISE descriptionCheck that task execution works echo hello from a file task记得chmod x mise-tasks/hello——若忘记加可执行位mise tasks列表为空时会直接给出警告和提示mise tasks validate也会报not-executable警告。延伸阅读Task configuration所有任务配置项的取值与范围说明Running tasks参数转发、通配符、并行与执行顺序Task arguments为任务定义带校验、帮助与补全的 CLITask cachingsources/outputs新鲜度与缓存输出Monorepo tasks--all、//path:task与跨项目根运行Task architecture任务发现、调度与失败处理原理docs/cli全部 mise 命令参考。【免费下载链接】misedev tools, env vars, task runner项目地址: https://gitcode.com/GitHub_Trending/mi/mise创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表