pact-foundation / composer-downloads-plugin
Composer插件,用于在任意Composer包中下载附加文件。
Requires
- php: ^8.1
- composer-plugin-api: ^2.1
- leongrdic/smplang: ^1.0.2
- symfony/filesystem: ^5.4 || ^6.4 || ^7.0
- symfony/finder: ^5.4 || ^6.4 || ^7.0
Requires (Dev)
- composer/composer: ^2.3
- friendsofphp/php-cs-fixer: ^3.51
- php-vfs/php-vfs: ^1.4
- phpunit/phpunit: ^9.6
- symfony/process: ^5.4 || ^6.4 || ^7.0
This package is not auto-updated.
Last update: 2024-09-19 19:14:15 UTC
README
此插件允许您下载额外文件并在包内提取它们。
这是civicrm/composer-downloads-plugin的更新版本。它增加了对更多存档文件的支持并允许自定义变量。
示例
假设您的PHP包foo/bar依赖于一个外部存档文件(Windows上的examplelib-1.1.0-windows-amd64.zip,Linux上的examplelib-1.1.0-linux-x86_64.tar.gz或MacOS上的examplelib-1.1.0-darwin-x86_64.tar.gz)
{
"name": "foo/bar",
"require": {
"pact-foundation/composer-downloads-plugin": "^1.0"
},
"extra": {
"downloads": {
"examplelib": {
"url": "https://example.com/examplelib-{$version}-{$os}-{$architecture}${$musl}.{$extension}",
"path": "extern/{$id}",
"version": "1.1.0",
"variables": {
"{$musl}": "PHP_OS === 'Linux' && musl() === true ? '-musl' : ''",
"{$os}": "strtolower(PHP_OS_FAMILY)",
"{$architecture}": "strtolower(php_uname('m'))",
"{$extension}": "PHP_OS_FAMILY === 'Windows' ? 'zip' : 'tar.gz'",
},
"ignore": ["tests", "doc", "*.md"],
"hash": {
"algo": "sha256",
"value": "08fbce50f84d89fdf1fdef425c7dd1a13c5c023fa87f453ba77db4df27d273c0"
}
}
}
}
}
当foo/bar的下游用户运行composer require foo/bar时,它将下载并提取存档文件到vendor/foo/bar/extern/examplelib。
属性
-
url: 额外文件的URL。 -
path: 内容将被提取的相对路径。 -
type: (可选)确定如何处理下载。如果省略,将使用url中的扩展名进行检测。- 存档类型(存档文件
url将被下载并提取到path)zip: 支持扩展*.ziprar: 支持扩展*.rarxz: 支持扩展*.tar.xztar: 支持扩展*.tar.gz、*.tar.bz2、*.tar、*.tgz
- 文件类型(文件
url将被下载并放置在path)filephar: 文件将被标记为可执行。gzip:*.gz文件将被提取到位于path的文件中。
- 存档类型(存档文件
-
ignore: (可选)要从中排除的文件列表。(可选)- 此支持
.gitignore子集。 - 仅与存档类型相关。
- 此支持
-
executable: (可选)标记应标记为可执行的文件列表。- 对于存档类型:值应为提取的文件列表
- 对于文件类型:值应为布尔值(true/false)
-
version: (可选)下载的工件版本号。(可选)- 这不会对工件的生命周期产生功能影响。
- 它可以影响控制台输出。
- 它可以作为变量使用。
-
variables: (可选)自定义变量列表。 -
hash: (可选)验证从url下载的文件内容。如果哈希值不相同:文件将被删除且Composer将抛出异常。algo: 选定哈希算法的名称(例如:“md5”、“sha256”、“haval160,4”等)。有关支持的算法列表,请参阅hash_algos()value: 哈希函数的预期值
变量
支持的属性
只有以下属性支持变量
urlpathignore
默认变量
{$id}: 下载标识符。 (在示例中,它将是examplelib。){$version}: 在version属性中定义的文本,如果未定义,则值为空字符串("")。
自定义变量
- 格式将是
"{$variable-name}": "EXPRESSION-SYNTAX-EVALUATED-TO-STRING" - 有关语法的更多信息,请参阅表达式语法。
- 语法必须评估为
string。
方法
自定义变量支持以下方法
rangestrtolowerphp_unamein_arraystr_containsstr_starts_withstr_ends_withmatchesmusl
常量
自定义变量支持这些常量
PHP_OSPHP_OS_FAMILYPHP_SHLIB_SUFFIXDIRECTORY_SEPARATOR
默认属性
您可以设置所有下载的默认属性。将它们放在*下,例如
{
"extra": {
"downloads": {
"*": {
"path": "bower_components/{$id}",
"ignore": ["test", "tests", "doc", "docs"],
"variables": {
"{$extension}": "zip"
}
},
"jquery": {
"url": "https://github.com/jquery/jquery-dist/archive/1.12.4.{$extension}"
},
"jquery-ui": {
"url": "https://github.com/components/jqueryui/archive/1.12.1.{$extension}"
}
}
}
}
文档
更多请参阅文档
贡献
欢迎提交拉取请求,请发送拉取请求。
如果您发现了任何错误,请报告问题。
作者
- Rob Bayliss - Composer Extra Files
- Tim Otten 及贡献者 - Composer Download Plugin
- Tien Vo 及贡献者 - 本项目
许可证
本软件包可在MIT许可证下使用。