fostam / pharizer
从PHP项目文件结构创建phar文件/可执行文件
Requires
- php: >=7.2
- ext-phar: *
- symfony/console: ^5.1
- symfony/yaml: ^5.1
Requires (Dev)
- phpunit/phpunit: 8.5.*
README
从PHP项目文件结构创建 phar 文件/可执行文件。
功能
- 易于集成到构建链中
- 支持每个项目多个phar文件
- 扩展文件过滤功能
安装
安装pharizer最简单的方法是使用 composer
$> composer require fostam/pharizer
安装后,可以从以下位置调用它
$> vendor/bin/pharizer
配置文件
配置文件指定应构建的PHAR,并使用YAML格式。通常,它位于项目文件结构的顶层。默认名称是pharizer.yaml。
示例 pharizer.yaml
target-directory: dist
targets:
myphar:
source-directory: .
stub-file: src/myphar.php
filters:
- include: ^(src|vendor)/
- exclude: .*
another.phar:
source-directory: .
stub-file: src/another.php
filters:
- include: ^(src|vendor)/
- exclude: .*
主要键
target-directory(可选):如果所有目标都应该放置在公共目录下,例如dist,则可以在此处指定。默认为当前目录(.)。targets:目标列表。目标名称可以有(但不一定需要).phar扩展名。它还可以包含一个路径。例如:dist/myphar.phar,myphar)。
目标键
source-directory(可选):用于收集文件的基目录。默认为当前目录(.)。stub-file:当执行或包含phar时调用的“入口点”文件。位置必须相对于source-directory。filters:可以使用过滤模式来控制哪些文件包含在PHAR中,哪些不包含。有关更多详细信息,请参阅“过滤器”。shebang(可选):用于stub文件的shebang行。默认为#!/usr/bin/env php。exclude-pharizer(可选):如果设置为true,则自动排除所有pharizer文件(如果pharizer已通过composer为当前项目安装)。默认为true。
命令
构建
使用构建命令,构建pharizer.yaml中的所有目标
$> pharizer build
要构建单个目标,请将目标名称附加到pharizer.yaml中定义的目标名称之后
$> pharizer build myphar.phar
列出文件
与build命令类似,list-files命令处理配置文件中的所有或特定目标。该命令列出匹配目标过滤器的所有文件,可用于测试和尝试过滤器。
过滤器
定义
过滤器定义为包括和排除正则表达式(PCRE)模式的列表。默认情况下,正则表达式没有锚点,即如果您想将它们锚定到文件路径的开始或结束,您必须使用^或$。
分隔符转义由内部处理,因此不需要转义斜杠字符(/)。
模式与source-directory下每个文件的完整文件路径匹配。源路径本身(包括开头的斜杠)被截断。
示例:源目录/my/app中的文件/my/app/src/file.php在应用过滤器模式后将成为src/file.php。
处理
对于目标目录中的每个文件,模式将按照在目标过滤器列表中给出的顺序进行处理。第一个匹配的模式将决定文件是包含还是排除。如果没有模式匹配,则默认包含文件。如果您想将默认行为更改为排除,只需将 exclude: ".*" 作为最后一个过滤器添加。
注意事项
YAML 转义
YAML 不允许像 * 这样的字符,因此当给出包含星号的模式时,请将其放在单引号中。避免使用双引号,因为它们与反斜杠转义不兼容。
- exclude: '.*\.php'
锚点
尝试使用 ^ 和 $ 或 / 锚定模式,以避免意外的匹配。
示例
lib/file.php
lib/file2.php
other/glibc.c
模式 include: src 不仅会匹配 src 目录中的文件,还会匹配 glibc.c 中的 "src" 部分。可以通过锚定模式来避免这种情况,例如 include: ^src/。
选项
配置文件
默认情况下,当前目录中的 pharizer.yaml 被用作配置文件。使用 -c 选项可以指定替代配置文件。
$> pharizer build -c ../myphar.yaml
详细程度
对于每个成功构建的目标,pharizer 将打印目标 PHAR 文件的名和大小。要关闭此功能,请使用 -q(静默)选项。
返回码
如果没有发生错误,pharizer 将以返回码 0 退出,否则以返回码 > 0 退出。