stolt / lean-package-validator
用于验证项目或软件包是否具有且将具有精简发布的库和CLI。
Requires
- php: >=8.1
- laminas/laminas-stdlib: ^3.7
- sebastian/diff: ^5.0||^4.0.3
- symfony/console: ^7.1.0||^v5.4.8
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- mockery/mockery: ^1.0
- phlak/semver: ^4.1
- php-mock/php-mock-phpunit: ^2.7||^1.1
- phpstan/phpstan: ^1.11
- phpunit/phpunit: ^11.2.6||^10.5.25
This package is auto-updated.
Last update: 2024-09-24 08:28:58 UTC
README
精简软件包验证器是一个实用工具,用于验证项目/微软件包的精简性
。当项目/微软件包的公共存储库工件不会包含在发布资产中时,它被认为是精简
的。
安装
应通过Composer全局安装精简软件包验证器CLI。
composer global require stolt/lean-package-validator
确保您的全局供应商二进制目录路径在您的$PATH
中。您可以通过composer global config bin-dir --absolute
确定全局供应商二进制目录的位置。这样就可以定位到lean-package-validator
可执行文件。
由于CLI的默认名称相当长,可以在~/.aliases
、~/.zshrc
等类似文件中放置别名,这可能会很有用。下面的别名假设$COMPOSER_HOME
是~/.config/composer
而不是~/.composer
。
alias lpv='~/.config/composer/vendor/bin/lean-package-validator $@'
精简软件包验证器还可以本地安装到项目中,这允许通过Composer脚本进一步利用。
composer require --dev stolt/lean-package-validator
提示
从版本v1.9.0
开始,也可以通过PHAR 文件安装和使用精简软件包验证器。
因此,下载一个发布版本,例如v3.3.1,并将其移动到/usr/local/bin
,如下所示。
wget --quiet https://github.com/raphaelstolt/lean-package-validator/releases/download/v3.3.1/lean-package-validator.phar mv lean-package-validator.phar /usr/local/bin/lean-package-validator
用法
在项目/微软件包目录中或针对其运行精简软件包验证器CLI,它将验证.gitattributes
文件中存在的export-ignore条目与一组常见存储库工件进行比较。如果不存在.gitattributes
文件,它将建议创建一个。
lean-package-validator validate [<directory>]
可用选项
--enforce-strict-order
选项将强制对.gitattributes
文件中的export-ignores执行严格顺序比较,如果顺序不同则验证失败。默认情况下,顺序比较是非严格的。
lean-package-validator validate [<directory>] --enforce-strict-order
--create|-c
选项在不存在的情况下创建一个.gitattributes
文件。
lean-package-validator validate [<directory>] --create
--overwrite|-o
选项在存在任何缺少export-ignore
条目时覆盖现有的.gitattributes
文件。在不存在.gitattributes
文件的目录上使用此选项意味着隐式使用--create
选项。
lean-package-validator validate [<directory>] --overwrite
--glob-pattern
选项允许您覆盖用于匹配常见存储库工件的自定义模式。分组花括号中的模式数量期望大于1。如下所示,此工具也可以用于PHP生态系统之外的项目(即Python)。
lean-package-validator validate [<directory>] --glob-pattern '{.*,*.rst,*.py[cod],dist/}'
默认模式在PHP预设文件中定义。
使用--glob-pattern-file
选项,您可以从指定文件加载模式,这些模式应用于匹配常见的仓库工件。您可以在仓库中放置一个.lpv
文件,它将默认使用并覆盖默认模式。此类glob模式文件的结构可以从示例目录中获取或通过lean-package-validator init
创建。
lean-package-validator validate [<directory>] --glob-pattern-file /path/to/glob-pattern-file
--keep-license
选项将允许在发布/分发的存档文件中包含许可文件,默认情况下会省略。
lean-package-validator validate [<directory>] --keep-license
--align-export-ignores|-a
选项将使创建或覆盖的export-ignores对齐,以获得更好的可读性。
lean-package-validator validate [<directory>] --align-export-ignores --create
--enforce-alignment
选项将强制在.gitattributes
文件中对export-ignores进行严格对齐,如果不对齐则验证失败。默认情况下不强制对齐。
--validate-git-archive
选项将验证没有常见的仓库工件滑入发布/分发存档文件。它将通过从当前的GitHEAD
创建一个临时存档
并检查其内容来完成此操作。使用设置--keep-license
选项后,许可文件变为强制性的,如果不存在则存档验证失败。
lean-package-validator validate [<directory>] --validate-git-archive
--diff
选项将显示实际和预期.gitattributes
内容之间的可视diff。
lean-package-validator validate --diff The present .gitattributes file is considered invalid. Would expect the following .gitattributes file content: --- Original +++ Expected @@ -7,9 +7,8 @@ .github/ export-ignore .gitignore export-ignore .gitmessage export-ignore .php-cs-fixer.php export-ignore -.phpunit.result.cache export-ignore +.idea/ export-ignore bin/application-version export-ignore bin/lean-package-validator.phar export-ignore bin/release-version export-ignore
--report-stale-export-ignores
选项将验证扩展到查找引用不存在仓库工件的export-ignore语句。结合使用--diff
选项,这些将在输出中显示。
附加命令
init
命令将创建一个初始的.lpv
文件,其中包含用于匹配常见仓库工件的默认模式。
lean-package-validator init [<directory>]
--overwrite|-o
选项将覆盖现有的.lpv
文件。
--preset
选项允许从一组预定义的glob模式中选择。可用的预设有PHP
、Python
和Go
。其中PHP
是默认选项。
通过Composer脚本或其专用GitHub Action使用
为了避免来自贡献或自身修改的更改滑入发布/dist存档,使用一个守卫的Composer脚本可能会有所帮助,该脚本将随时可用。
通过在项目/微包的composer.json
中添加以下内容,现在可以轻松通过composer validate-gitattributes
验证.gitattributes
文件。
{ "scripts": { "validate-gitattributes": "lean-package-validator validate" }, }
要利用专门的GitHub Action,请参阅此处的文档。
运行测试
composer lpv:test
许可
此库及其CLI受MIT许可证的许可。有关详细信息,请参阅LICENSE.md。
变更日志
有关详细信息,请参阅CHANGELOG.md。
贡献
有关详细信息,请参阅CONTRIBUTING.md。