Composer:在包 URL 中包含版本变量

Composer: Include version variable in package URL

我有一个包,在下载中包含它的版本号 URL:https://example.com/zip/4.3/package.zip

有没有办法将版本号作为变量传递,这样我就不必在每次发布时都更改包 URL?

像这样:

{
  "type": "package",
  "package": {
    "name": "example/package",
    "version": "4.3",
    "dist": {
      "type": "zip",
      "url": "https://example.com/zip/{$version}/package.zip"
    }
  }
}

我在 documentation 中找不到关于此主题的任何信息。

根据 composer/composer#6631 无法在包 URL 中使用变量:

No, and I do not really see a good use-case for this either, so it is very unlikely to be included.

可以这样用 private-composer-installer 来完成:{%version}

{
  "type": "package",
  "package": {
    "name": "example/package",
    "version": "4.3",
    "dist": {
      "type": "zip",
      "url": "https://example.com/zip/{%version}/package.zip"
    },
    "require": {
      "ffraenz/private-composer-installer": "^4.0"
    }
  }
}

下面是一个使用环境变量的例子:

{
  "type": "package",
  "package": {
    "name": "package-name/package-name",
    "version": "1.0.0",
    "dist": {
      "type": "zip",
      "url": "https://example.com/package-name.zip?key={%PACKAGE_KEY}&version={%VERSION}"
    },
    "require": {
      "ffraenz/private-composer-installer": "^4.0"
    }
  }
}