Bob 项目技术文档
2024-12-25 10:20:38作者:魏侃纯Zoe
1. 安装指南
前提条件
Bob 需要至少 PHP 5.3.2 才能运行。如果你计划对 Bob 进行开发,请确保在 php.ini 中将 phar.readonly 设置为 Off。否则,你将无法创建 Bob 的 PHAR 包。
安装方式
推荐方式:使用 Composer 安装
- 在你的
composer.json文件中,将chh/bob包添加到require-dev部分:{ "require-dev": { "chh/bob": "1.0.*@dev" } } - 运行
composer install --dev安装 Bob。 - 你可以通过以下命令调用 Bob:
或者:php vendor/bin/bob./vendor/bin/bob
系统级安装(仅适用于类 Unix 系统)
- 下载 Bob 的 [Release][tags] 或通过以下命令克隆仓库:
git clone git://github.com/CHH/bob.git cd Bob - 下载 Composer 并运行
composer install安装 Bob 的依赖:wget http://getcomposer.org/composer.phar php composer.phar install - 运行
php bin/bob install完成安装。默认情况下,bob命令会安装在/usr/local/bin目录下。你可以通过设置PREFIX环境变量来更改安装路径,命令将安装在$PREFIX/bin目录下。
2. 项目使用说明
初始化项目
- 在你的项目根目录下运行以下命令,生成一个空的
bob_config.php文件:php vendor/bin/bob --init - Bob 会从项目根目录下的
bob_config.php文件中加载任务。你还可以在bob_tasks目录中添加其他任务文件,Bob 会自动加载这些文件。
定义任务
- 在
bob_config.php文件中定义任务。例如,定义一个输出 "Hello World" 的任务:task('hello', function() { println('Hello World'); }); - 通过命令行运行任务:
php vendor/bin/bob hello - 如果没有指定任务,Bob 会尝试运行
default任务。你可以通过以下方式将任务设置为默认任务:task('default', array('hello'));
文件任务
文件任务是一种特殊的任务,只有在目标文件不存在或依赖文件比目标文件更新时才会运行。例如,定义一个将多个文件合并为一个文件的任务:
fileTask('concat.txt', array('file1.txt', 'file2.txt', 'file3.txt'), function($task) {
println("Concatenating");
$concat = '';
foreach ($task->prerequisites as $file) {
$concat .= file_get_contents($file);
}
@file_put_contents($task->name, $concat);
});
任务库
你可以将一组任务打包成任务库,以便在多个项目中复用。任务库需要实现 \Bob\TaskLibraryInterface 接口,并在 register 函数中注册任务。
3. 项目 API 使用文档
任务定义
task(string $name, callable $body): 定义一个任务。fileTask(string $name, array $prerequisites, callable $body): 定义一个文件任务。desc(string $description): 为任务添加描述。register(TaskLibraryInterface $library): 注册任务库。
任务执行
- 通过命令行运行任务:
php vendor/bin/bob <task_name>。 - 查看所有任务及其描述:
php vendor/bin/bob --tasks。
4. 项目安装方式
使用 Composer 安装
- 在
composer.json中添加chh/bob包。 - 运行
composer install --dev。 - 通过
php vendor/bin/bob调用 Bob。
系统级安装
- 克隆仓库或下载 Release。
- 安装依赖并运行
php bin/bob install。 - 通过
bob命令调用 Bob。
登录后查看全文
热门项目推荐
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0204- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
awesome-zig一个关于 Zig 优秀库及资源的协作列表。Makefile00
热门内容推荐
项目优选
收起
deepin linux kernel
C
27
12
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
608
4.05 K
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
69
21
暂无简介
Dart
850
205
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.47 K
829
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
12
1
喝着茶写代码!最易用的自托管一站式代码托管平台,包含Git托管,代码审查,团队协作,软件包和CI/CD。
Go
24
0
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
924
774
🎉 基于Spring Boot、Spring Cloud & Alibaba、Vue3 & Vite、Element Plus的分布式前后端分离微服务架构权限管理系统
Vue
235
152
昇腾LLM分布式训练框架
Python
131
157