linkorb / php-tools
PHP 工具:qa、测试等独立的工具集合
Requires
- php: >=7.2.0
- bamarni/composer-bin-plugin: ^1.4
This package is not auto-updated.
Last update: 2023-02-22 01:21:50 UTC
README
注意:鉴于这个php-tools仓库与https://github.com/jakzal/phpqa具有相同的目标,我们决定存档php-tools,并改为贡献给phpqa
php-tools
一组工具,用于在PHP项目中执行静态分析、单元测试/行为测试、文档化等。
用法
PHP 开发者普遍认为,PHP 工具不应像常规的 composer 依赖项(也不通过 require-dev),而应全局安装。
- https://twitter.com/s_bergmann/status/999635212723212288
- composer/composer#5390
- composer/composer#9636
- https://docs.phpdoc.org/2.9/getting-started/installing.html#using-composer ("我们无法支持由此类依赖冲突引起的问题")
- https://www.phpdoc.org/ (参见 "但等等?关于Composer呢?")
主要原因之一是,将许多工具添加到 require-dev 会显著增加项目的依赖项和约束的复杂性。这可能会迅速导致难以或无法解决的冲突。通过“全局”安装这些工具,您的项目依赖项将保持简单。
此存储库包含最常用的PHP工具,因此您可以轻松安装一次,全局使用。然后,您可以在测试、生成文档等过程中从所有项目中运行这些工具。
安装
git clone https://github.com/linkorb/php-tools.git
cd php-tools
composer install # this recursively installs the tools inside of the `tools/` directory.
更新您的 PATH 环境变量
要确保您可以从任何(项目)目录中调用可用的工具,您需要将此存储库的 bin/
目录添加到您的 PATH 环境变量中
export PATH="/path/to/php-tools/bin:$PATH"
现在,您可以从其他目录中确认是否可以成功运行 phpstan --help
。
要使此更改永久生效,将上一行添加到您的 ~/.bashrc
、~/.profile
或类似的 shell 初始化脚本。不要忘记启动新的登录会话以检查是否生效。
如果您正在使用 linuxserver 的 code-server,您可以将 PATH 变量作为 docker-compose.yml 文件的一部分传递。
故障排除
未捕获错误:未定义常量 Bamarni\Composer\Bin\Command\BinCommand::SUCCESS
如果 composer-bin-plugin
无法解析 php-tools/bin
文件夹中保存的二进制文件路径,则可能会发生这种情况。在运行 composer install
之前将 path/to/php-tools/bin
添加到您的 PATH 环境变量中可能会修复此错误。
替代方案
- 在 "require-dev" 中列出工具。这会迅速导致复杂的依赖项冲突(有时无法解决)
- 使用 "composer global install" 安装工具。虽然这使你的项目依赖简单,但仍然结合了所有工具的限制,仍然导致复杂的依赖图。
- 安装工具的 "phar" 版本。很好,但下载和更新这些可执行文件很麻烦。
- 使用 phive 和 phar.io 来管理你的 .phar 可执行文件。并非所有工具都在 phar.io 上,并且会导致大量重复。
- 使用 phpqa docker 容器。在本地开发和 CI 之间复用构建配置很复杂(应该是相同的)。
它是如何工作的?
在 bin/
目录中,你可以找到每个可用工具的符号链接(phpstan、phpmd、phpcs 等)。这些符号链接指向 tools/ 目录内工具本身。
此项目使用 composer-bin-plugin 来管理 tools/
目录,其中每个工具都有自己的子目录(例如 tools/phpstan
)。
这些子目录是具有单个依赖项(工具)的微型独立 composer 项目。你会在每个工具目录中找到一个 composer.json
和一个 composer.lock
文件。
你可以在 php-tools
根目录下运行 composer install
,这将在每个工具子目录内触发 composer install
。
添加新工具
你可以使用 composer-bin-plugin
来将新工具添加到集合中。
composer bin phpcs require squizlabs/php_codesniffer
- 在
bin
之后的名字是这个工具将在tools/
中创建的子目录的名称。 require
之后的部分是工具在 packagist.org 上注册的 composer 包名。
最后,创建指向你新添加的工具的符号链接。
cd bin/
ln -s ../tools/phpcs/vendor/bin/phpcs bin/phpcs
ln -s ../tools/phpcs/vendor/bin/phpcbf bin/phpcbf
现在提交
- tools/phpcs/composer.json 和 .lock 文件
- 你创建的任何
bin/
中的符号链接
此项目的 .gitignore
文件应确保你没有提交任何 vendor/ 目录。
此项目的 .gitattributes
确保你的 composer.lock 文件作为 "二进制" 文件管理,以避免合并冲突。
许可协议
MIT。请参阅 许可文件 获取详细信息。
由 LinkORB 工程团队提供
查看我们的其他项目,请访问 linkorb.com/engineering。
顺便说一句,我们在招聘!