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
: 支持扩展*.zip
rar
: 支持扩展*.rar
xz
: 支持扩展*.tar.xz
tar
: 支持扩展*.tar.gz
、*.tar.bz2
、*.tar
、*.tgz
- 文件类型(文件
url
将被下载并放置在path
)file
phar
: 文件将被标记为可执行。gzip
:*.gz
文件将被提取到位于path
的文件中。
- 存档类型(存档文件
-
ignore
: (可选)要从中排除的文件列表。(可选)- 此支持
.gitignore
子集。 - 仅与存档类型相关。
- 此支持
-
executable
: (可选)标记应标记为可执行的文件列表。- 对于存档类型:值应为提取的文件列表
- 对于文件类型:值应为布尔值(true/false)
-
version
: (可选)下载的工件版本号。(可选)- 这不会对工件的生命周期产生功能影响。
- 它可以影响控制台输出。
- 它可以作为变量使用。
-
variables
: (可选)自定义变量列表。 -
hash
: (可选)验证从url
下载的文件内容。如果哈希值不相同:文件将被删除且Composer将抛出异常。algo
: 选定哈希算法的名称(例如:“md5”、“sha256”、“haval160,4”等)。有关支持的算法列表,请参阅hash_algos()
value
: 哈希函数的预期值
变量
支持的属性
只有以下属性支持变量
url
path
ignore
默认变量
{$id}
: 下载标识符。 (在示例中,它将是examplelib
。){$version}
: 在version
属性中定义的文本,如果未定义,则值为空字符串(""
)。
自定义变量
- 格式将是
"{$variable-name}": "EXPRESSION-SYNTAX-EVALUATED-TO-STRING"
- 有关语法的更多信息,请参阅表达式语法。
- 语法必须评估为
string
。
方法
自定义变量支持以下方法
range
strtolower
php_uname
in_array
str_contains
str_starts_with
str_ends_with
matches
musl
常量
自定义变量支持这些常量
PHP_OS
PHP_OS_FAMILY
PHP_SHLIB_SUFFIX
DIRECTORY_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许可证下使用。