pact-foundation/composer-downloads-plugin

Composer插件,用于在任意Composer包中下载附加文件。

v2.1.1 2024-05-16 17:28 UTC

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}"
      }
    }
  }
}

文档

更多请参阅文档

贡献

欢迎提交拉取请求,请发送拉取请求

如果您发现了任何错误,请报告问题

作者

许可证

本软件包可在MIT许可证下使用。