digitalerase / deployer-loader
自动加载供应商和自动加载部署任务。
README
它做什么?
此软件包允许您
- 将项目供应商类注册到 deploy.php 中使用。请参阅 "包含类加载器" 了解更多信息,为什么您不应在 deploy.php 中包含项目 vendor/autoload.php。
- 加载单个任务/设置文件。
- 从文件夹中加载多个任务/设置文件。
安装
composer require digitalerase/deployer-loader
使用
包含类加载器
如果 Deployer 作为从全局安装或从本地 ./vendor/bin/dep
(从 deployer/dist
安装)的 phar 使用,则它已经包含了它自己的 vendor/autoload.php
。如果我们在 deploy.php
文件中要求从我们的项目中 vendor/autoload.php
,那么这将是一个麻烦,因为我们正在将两个具有非同步依赖的自动加载组合在一起。我们添加到 deploy.php
中的第二个 composer vendor/autoload.php
具有优先级,因为 composer 使用 spl_autoload_register()
方法的 prepend
参数,该参数将自动加载器添加到自动加载队列的起始位置而不是末尾。因此,我们的项目的类将用于 Deployer phar 的类之前。
解决方案是在 deploy.php
中包含 digitalerase/deployer-loader
的 autoload.php。
使用 spl_autoload_register()
,它将注册新的闭包函数以查找类,并且它将使用没有 prepend
参数的方式注册自己。因此,Deployer phar 的自动加载类将首先使用,如果它们不存在,则回退到主项目供应商的类。
如何使用它?只需在您的 deploy.php
(如果有的话,请删除 vendor/autoload.php
)的开头包含自动加载即可
require_once(__DIR__ . '/vendor/digitalerase/deployer-loader/autoload.php');
在代码中的此点之后,您可以使用在 composer.json
文件中声明的所有 psr4 供应商类。
加载部署任务
digitalrase/deployer-loader 软件包还允许您包含单个文件或从文件夹(递归地)包含多个文件。
加载单个文件的示例
new \SourceBroker\DeployerLoader\Load( [path => 'vendor/digitalerase/deployer-extended-database/deployer/db/task/db:copy.php'], [path => 'vendor/digitalerase/deployer-extended-database/deployer/db/task/db:move.php'], );
递归加载文件夹中所有文件的示例
new \SourceBroker\DeployerLoader\Load( [ path => 'vendor/digitalerase/deployer-extended-database/deployer/db/' excludePattern => '/move/' ], [ path => 'vendor/digitalerase/deployer-extended-media/deployer/media/' ], );
您可以使用 preg_match "excludePattern" 排除文件。
变更日志
请参阅 https://github.com/digitalerase/deployer-loader/blob/master/CHANGELOG.rst