stolt/lean-package-validator

用于验证项目或软件包是否具有且将具有精简发布的库和CLI。

v4.0.3 2024-07-09 02:19 UTC

README

Test Status Version PHP Version composer.lock available PDS Skeleton

精简软件包验证器是一个实用工具,用于验证项目/微软件包的精简性。当项目/微软件包的公共存储库工件不会包含在发布资产中时,它被认为是精简的。

安装

应通过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模式中选择。可用的预设有PHPPythonGo。其中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