ffraenz / private-composer-installer
私有包的Composer安装助手
Requires
- php: ^7.1 || ^8.0
- composer-plugin-api: ^1.0 || ^2.0
- vlucas/phpdotenv: ^4.1 || ^5.2
Requires (Dev)
- composer/composer: ^1.0 || ^2.0
- laminas/laminas-coding-standard: ^2.0
- symfony/phpunit-bridge: ^5.1
- symfony/process: ^4.4 || ^5.1
README
这是一个提供在 composer.json
和 composer.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 和 贡献者 共同开发的项目。