civicrm / composer-compile-plugin
为依赖图中的所有包定义一个 '编译' 事件
v0.20
2023-03-01 06:55 UTC
Requires
- php: >=7.2
- composer-plugin-api: ^1.1 || ^2.0
- totten/lurkerlite: ^1.3
Requires (Dev)
- composer/composer: ~1.0
- totten/process-helper: ^1.0.1
README
"编译" 插件允许 PHP 库的开发者定义自定义的 "编译" 任务,例如
- 将 SCSS 转换为 CSS
- 基于 XML 架构生成 PHP 封装器
对于使用这些 PHP 库的网站构建者,编译任务将在常规下载(如 `composer install`)期间无缝运行。
对于发布 PHP 库的开发者,任务可以非常简单,例如
{ "require": {"civicrm/composer-compile-plugin": "~0.14"}, "extra": { "compile": [ {"run": "@sh cd css; cat one.css two.css three.css > all.css"} ] } }
任务可以通过多种方式定义,包括
- Shell 命令(`@sh cat file-{1,2,3} > big-file`)
- PHP 方法(`@php-method MyBuilder::build`)
- PHP 评估(`@php-eval file_put_contents('big-file', make_big_file());`)
- PHP 脚本文件(`@php-script my-script.php`)
- Composer 子命令(`@composer dump-autoload`)
特性
- 易于启用。不需要下游网站构建者进行手动配置。与框架无关。
- 与其他
composer
工具配合良好,如 分支仓库、composer-patches、composer-locator、composer-downloads 和自动加载器。 - 允许库仓库保持 "干净",无需提交构建工件。
- 在本地 PHP 中运行。不需要外部/托管服务或额外的解释器。
- 支持文件监控以实现自动重建(`composer compile:watch`)
- 强制执行权限模型,以解决关于
composer
钩子和不可信库的历史问题。 - 集成测试在
composer
v1.10 和 v2.0 上均通过。
文档
- site-build.md:管理根包(针对网站构建者)
- tasks.md:处理任务(针对库开发者)
- evaluation.md:评估并与其他选项进行比较
- develop.md:如何与
composer-compile-plugin.git
一起工作(针对插件开发)
另请参阅
- composer-compile-lib:用于特定编译任务的具有见解的助手/示例的小型库 -- meta-PHP、SCSS 等
- composer#1193:关于依赖项后安装钩子的旧讨论线程