linkorb/php-tools

此包已被弃用,不再维护。没有建议的替代包。

PHP 工具:qa、测试等独立的工具集合

安装: 2

依赖者: 0

建议者: 0

安全: 0

星标: 3

关注者: 2

分支: 2

开放问题: 0

语言:Dockerfile

v1.0.0 2021-07-12 19:15 UTC

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),而应全局安装。

主要原因之一是,将许多工具添加到 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 工程团队提供

687474703a2f2f7777772e6c696e6b6f72622e636f6d2f642f6d6574612f74696572312f696d616765732f6c696e6b6f7262656e67696e656572696e672d6c6f676f2e706e67
查看我们的其他项目,请访问 linkorb.com/engineering

顺便说一句,我们在招聘!