guilhermegeek / ken
Hacklang项目的构建自动化工具
Requires
- chh/optparse: ^0.1.0
- guilhermegeek/communia: dev-dev
- symfony/process: ^3.0
Requires (Dev)
- phpunit/phpunit: ~4.5
This package is not auto-updated.
Last update: 2024-09-14 19:36:58 UTC
README
Ken是Hacklang的项目自动化工具,也可以用作通用构建工具。
Ken的存在是因为Bob,一个优秀的PHP工具,Ken基于它。我没有进行分支操作,因为项目变化太大。
工作原理
Ken不使用XML/JSON作为任务文件。相反,任务通过使用TaskLibraryInterface或配置文件与PHP语言本身注册。
Application是开发人员用于注册任务文件或库的核心对象。
任务由TaskFactory创建。
入门指南
如果没有指定,默认配置文件将从ken_config.php加载
如果ken_tasks文件夹存在,则该文件夹中的所有文件都视为配置文件。
运行时需要配置文件,并使用2个函数
- task(name, dependencies, action) - 注册一个新任务 ..+ task(name, dependencies) ..+task(name, action) ..+task(action)
- desc(text) - 为下一个定义的任务提供描述
配置文件还有一个全局的Application实例,可以在任务闭包外访问,内部称为action。
desc('Concat clientside code'); task('concat', function(Application $app) { // concat files }); desc('Minify clientside code'); task('minify', function(Application $app) { // minify files }); task('default', ['concat', 'minify'])
为了提供更好的OOA方法,您可以使用TaskLibraryInterface定义任务。
库通过在Application中注册
register(TaskLibraryInterface $taskLib, array $parameters = array())
创建新库时必须实现TaskLibraryInterface。例如,请检查ComposerLibrary,它管理composer包。
客户端接口
ClientInterface表示开发人员使用Ken库的入口点。
目前有两个针对ClientInterface的实现
- Cli:用于与HHVM客户端一起使用的CLI实现
- Host:用于在另一个框架或现有项目中使用的实现(您可以从代码内部轻松执行任务)
虽然CLI用于从命令行直接执行任务,但Host用于在代码内部消费。
Cli和Host都会初始化客户端依赖项,创建一个新的Application,然后调用run方法。
Cli
CLI非常直接,您可以通过bin/ken
访问它。
当调用run方法时,CLI执行任务。
Host
Host客户端必须在应用程序启动时运行,在执行任何对Ken的消费之前。要执行任务,开发人员调用task方法。
安装
先决条件
Ken至少需要hhvm 3.8才能运行。
Composer
将guilhermegeek/ken
包添加到Composer的require-dev
部分
{ "require-dev": { "guilhermegeek/ken": "master" } }
然后运行 composer install -dev
你可以使用以下命令来调用ken:
hhvm bin/ken