Maid开发者指南:从零开始构建自定义任务运行器

📅 2026/8/23 16:31:17
Maid开发者指南:从零开始构建自定义任务运行器
Maid开发者指南从零开始构建自定义任务运行器【免费下载链接】maidMarkdown driven task runner.项目地址: https://gitcode.com/gh_mirrors/ma/maidMaid 是一个由Markdown 驱动的任务运行器Task Runner你可以直接在名为maidfile.md的 Markdown 文件里定义并运行项目任务。本指南带你从零开始掌握 Maid 的安装、任务定义、任务编排与源码结构快速构建属于自己团队的自定义任务运行器。 什么是 Maid传统的任务运行器如 Make、Grunt需要你学习专用语法或编写配置文件。Maid 的思路更简单任务即文档。用##二级标题定义任务名标题下的段落作为任务描述代码块就是任务要执行的脚本文档和脚本合二为一团队成员打开maidfile.md就知道有哪些任务、怎么运行。 一键安装 Maid全局安装即可在任意项目中使用# npm 用户 npm i -g maid # Yarn 用户 yarn global add maid如果想让团队保持版本一致推荐作为开发依赖安装到项目中npm i -D maid安装后直接运行maid它会查找当前目录下的maidfile.md也兼容CONTRIBUTING.md和README.md。✍️ 编写第一个 maidfile用 Markdown 定义任务在项目根目录创建maidfile.md一个最小可用的任务定义如下## lint 使用 ESLint 保证代码质量。 bash eslint --fixbuild构建主程序babel src -d lib运行 maid help 即可看到任务列表 bash ❯ maid help lint 使用 ESLint 保证代码质量。 build 构建主程序执行任务的语法就是maid 任务名❯ maid build [13:46:38] Starting build... [13:46:38] Finished build after 363 ms...还支持通配符过滤maid help build*和--quiet精简日志。 任务编排before/after 与 pre/post 钩子任务之间可以互相调用。在任务描述中写入以Run task开头的句子Maid 会自动解析执行顺序## build Run task deploy after this bash webpack --config webpack.config.js此时运行 maid build构建完成后会自动执行 deploy。语法要点 - Run task \build\ —— 当前任务**之前**执行 - Run task \build\ after this —— 当前任务**之后**执行 - Run tasks \a\, \b\ before this in parallel —— **并行**执行多个前置任务 Maid 还提供了类似 npm scripts 的**钩子任务** - pre任务名 / post任务名在指定任务前后执行 - beforeAll / afterAll在所有任务开始前 / 结束后执行 例如运行 maid build 时prebuild 和 postbuild 会自动被串联执行。这些编排逻辑由 [lib/index.js](#) 中的 runTaskHooks 实现相关源码在 lib/index.jsL104-L114。 ## 多语言任务脚本bash、JavaScript、Python 代码块的语言标记决定了任务脚本的执行方式 | 代码块标记 | 执行方式 | | --- | --- | | bash / sh | 作为 Shell 命令执行可访问命令行参数 $1 | | js / javascript | 作为 JS 模块执行支持异步任务返回 Promise | | py / python | 作为 Python 脚本执行 | Shell 脚本可以直接拿到 CLI 参数例如 maid log nice 会打印 nice md ## log bash echo $1JS 脚本支持**异步任务**导出一个返回 Promise 的函数即可 js module.exports async () { const files await readFiles(./) await buildFiles(files) }命令行额外传入的参数会自动透传给脚本所以maid lint --fix可以直接把--fix交给 ESLint。命令执行的核心在lib/runCLICommand.js它通过cross-spawn启动子进程并自动把node_modules/.bin加入 PATH因此 maidfile 中可以直接调用本地安装的依赖命令。⚙️ 进阶配置自定义 maidfile 与 ZSH 补全Maid 默认按顺序查找maidfile.md、CONTRIBUTING.md、README.md。如果想在README.md中声明任务在目标h2标题下加一行注释!-- maid-tasks --其下的h3标题就会成为任务——这样文档与开发流程天然融合本项目自身的README.md就是这么做的。也可以用参数完全自定义maid --path docs/tasks.md --section DevelopmentZSH 用户还能获得命令补全将下面这行加入.zshrc输入maid加 Tab 即可提示所有任务名补全脚本位于completion/zsh/_maid。export FPATH$(npm root -g)/maid/completion/zsh:$FPATH Maid 源码结构导读Maid 的核心代码非常精简全部在lib/目录中非常适合学习模块职责lib/index.js核心Maid类任务查找、顺序/并行执行、钩子触发、help 输出lib/parseMarkdown.js用markdown-it解析 maidfile提取任务名、描述、脚本与Run task编排指令lib/readMaidFile.jslib/loadFile.js按优先级在 cwd 中定位 maidfile 文件lib/runCLICommand.js通过cross-spawn执行 Shell/Python 脚本并处理退出码lib/logger.js基于fancy-log的彩色日志支持--quietlib/MaidError.js统一错误类型test/parseMarkdown.test.js解析逻辑的 AVA 单元测试快照在test/snapshots/一个任务的完整生命周期是runTask先执行前置钩子 → 依次执行每个脚本runScript→ 记录耗时 → 执行后置钩子整体流程见lib/index.jsL42-L72。如果想扩展新的脚本语言只需在runScript中增加一个类型分支即可。想克隆源码研究可以执行git clone https://gitcode.com/gh_mirrors/ma/maid 开发 Maid它用自己运行自己的任务Maid 是吃自己的狗粮的典范它的开发任务就定义在README.md的!-- maid-tasks --区块里包括maid lint—— ESLint Prettier 检查代码风格maid test—— 用 AVA 运行单元测试maid toc—— 用doctoc重新生成 README 的目录提交代码时huskylint-staged会自动触发yarn maid lint --fix配置写在package.json中。✅ 小结Maid 让任务定义即 Markdown 文档上手零门槛maid help查看任务、maid 任务名执行任务支持参数透传用Run task句子和pre/post钩子轻松编排复杂流程bash / JavaScript / Python 三类脚本覆盖绝大多数自动化场景源码精简lib/目录仅 7 个文件是学习实现一个任务运行器的绝佳范例现在打开你的项目创建一个maidfile.md把散落在 Wiki 和终端历史里的命令整理进去吧【免费下载链接】maidMarkdown driven task runner.项目地址: https://gitcode.com/gh_mirrors/ma/maid创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考