ffraenz/private-composer-installer

私有包的Composer安装助手

资助包维护!
ffraenz

安装次数: 1,388,193

依赖关系: 5

建议者: 0

安全: 0

星星: 224

关注者: 5

分支: 16

开放问题: 4

类型:composer-plugin

v5.0.1 2020-10-30 09:35 UTC

This package is auto-updated.

Last update: 2024-09-02 15:48:37 UTC


README

Packagist version MIT license Build Status Coverage Status Packagist downloads

这是一个提供在 composer.jsoncomposer.lock 中引用私有包URL的 Composer 插件。它将敏感的dist URL部分(许可证密钥、令牌)外包到环境变量或通常被版本控制忽略的 .env 文件中。当无法使用 Private Packagist基本HTTP认证 时,这特别有用,因为包的来源不在你的控制之下。这个存储库灵感来源于 acf-pro-installer

快速概述

  • 此插件与Composer 2.x(最新版)和1.x都兼容。
  • 在安装或更新包时,dist URL的 {%VERSION} 占位符将被包中设置的版本替换。在Composer 1中,dist URL版本在添加到 composer.lock 之前被满足。
  • 在下载包之前,格式为 {%VARIABLE} 的占位符将被dist URL中的相应环境变量替换。环境变量永远不会存储在 composer.lock 中。
  • 如果给定占位符不存在对应的环境变量,插件将尝试从工作目录或父目录中的 .env 文件中读取它。由 vlucas/phpdotenv 解析 .env 文件。
  • 如果无法解析环境变量,将抛出 MissingEnvException
  • 没有 {%VARIABLE} 格式化占位符的包dist URL将被此插件忽略。

示例

任意私有包

将所需的私有包添加到 composer.json 中的 repositories 字段。有关Composer仓库的更多信息,请参阅 Composer 文档。指定要安装的确切版本,并使用 {%VARIABLE} 占位符在 .env 文件中指定任何敏感令牌。

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

.env 文件中提供私有包dist URL

PACKAGE_KEY=pleasedontusethiskey

让Composer需要私有包

composer require "package-name/package-name:*"

WordPress插件

可以使用 composer/installers 安装程序与包类型 wordpress-plugin 一起安装WordPress插件。在这个例子中,我们正在安装ACF Pro插件。将以下条目添加到 composer.json 中的 repositories 字段,并设置所需的ACF Pro版本。

{
  "type": "package",
  "package": {
    "name": "advanced-custom-fields/advanced-custom-fields-pro",
    "version": "REPLACE_WITH_LATEST_ACF_VERSION",
    "type": "wordpress-plugin",
    "dist": {
      "type": "zip",
      "url": "https://connect.advancedcustomfields.com/index.php?a=download&p=pro&k={%PLUGIN_ACF_KEY}&t={%VERSION}"
    },
    "require": {
      "composer/installers": "^1.4",
      "ffraenz/private-composer-installer": "^5.0"
    }
  }
}

.env 文件中提供ACF Pro密钥。要获取此密钥,请登录到您的 ACF 账户 并滚动到 'Licenses & Downloads'。

PLUGIN_ACF_KEY=pleasedontusethiskey

让Composer需要ACF Pro

composer require "advanced-custom-fields/advanced-custom-fields-pro:*"

配置

以下配置选项可以像这样添加到 composer.json 的根配置中

{
  "name": "...",
  "description": "...",
  "require": {
  },
  "extra": {
    "private-composer-installer": {
      "dotenv-path": ".",
      "dotenv-name": ".env"
    }
  }
}

dotenv-path

相对根包目录(composer.json 所在位置)的dotenv文件目录。默认情况下,预计dotenv文件位于根包文件夹或其父文件夹中。

dotenv-name

dotenv文件名。默认为 .env

依赖关系

本软件包高度依赖于 vlucas/phpdotenv 来自动加载环境变量。如果你的项目已经依赖它,这可能会导致版本冲突。请参考下表来相应地设置 private-composer-installer 的版本,或者考虑升级。

开发

安装 Composer 依赖

docker-compose run --rm composer composer install

在将更改推送到仓库之前,请运行以下命令进行测试和检查代码规范:

docker-compose run --rm composer composer test

这是一个由 Fränz Friederes贡献者 共同开发的项目。