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。
登录后查看全文
热门项目推荐
kernelopenEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。C091
baihu-dataset异构数据集“白虎”正式开源——首批开放10w+条真实机器人动作数据,构建具身智能标准化训练基座。00
mindquantumMindQuantum is a general software library supporting the development of applications for quantum computation.Python058
PaddleOCR-VLPaddleOCR-VL 是一款顶尖且资源高效的文档解析专用模型。其核心组件为 PaddleOCR-VL-0.9B,这是一款精简却功能强大的视觉语言模型(VLM)。该模型融合了 NaViT 风格的动态分辨率视觉编码器与 ERNIE-4.5-0.3B 语言模型,可实现精准的元素识别。Python00
GLM-4.7GLM-4.7上线并开源。新版本面向Coding场景强化了编码能力、长程任务规划与工具协同,并在多项主流公开基准测试中取得开源模型中的领先表现。 目前,GLM-4.7已通过BigModel.cn提供API,并在z.ai全栈开发模式中上线Skills模块,支持多模态任务的统一规划与协作。Jinja00
AgentCPM-Explore没有万亿参数的算力堆砌,没有百万级数据的暴力灌入,清华大学自然语言处理实验室、中国人民大学、面壁智能与 OpenBMB 开源社区联合研发的 AgentCPM-Explore 智能体模型基于仅 4B 参数的模型,在深度探索类任务上取得同尺寸模型 SOTA、越级赶上甚至超越 8B 级 SOTA 模型、比肩部分 30B 级以上和闭源大模型的效果,真正让大模型的长程任务处理能力有望部署于端侧。Jinja00
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
473
3.52 K
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
223
90
暂无简介
Dart
721
174
Ascend Extension for PyTorch
Python
283
316
React Native鸿蒙化仓库
JavaScript
286
338
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
849
438
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.27 K
699
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
10
1
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
65
19