drupol / composer-local-repo-plugin
一个为Composer提供的命令行工具,用于创建项目的本地Composer仓库。
dev-main
2023-09-10 08:35 UTC
Requires
- php: ^8.0 || ^8.1
- composer-plugin-api: ^2
Requires (Dev)
- composer/composer: ^2.6
This package is auto-updated.
Last update: 2023-10-10 08:52:20 UTC
README
此插件是为Composer构建的,简化了从现有包创建本地composer
类型仓库的过程(参考文档)。
仓库类型composer
与Packagist使用的格式相同。它使用特定的结构,包含名为packages.json
的清单文件和独特的目录结构。仓库中的每个包版本都有对应的源代码。
该插件旨在以可重复的方式安装PHP包,创建仓库后无需网络访问。
该插件目前在Nix中使用。更多详细信息可以在相关PR中找到,标志着项目的开始。
此项目受到了Jan Tojnar的fossar/composition-c4
的强烈启发。
要求
- Composer 2
安装
全局安装插件一次
composer global require loophp/composer-local-repo-plugin
使用
- 导航到包目录,或使用
--working-dir
选项。 - 确保存在
composer.json
和composer.lock
文件。 - 使用命令生成本地仓库:
composer build-local-repo /path/to/local/repository
。这将创建指定目录中的本地composer
仓库,并在同一位置生成清单文件packages.json
。使用-r
或-m
选项仅生成仓库或清单文件。有关更多详细信息,请参阅命令帮助:composer build-local-repo --help
。 - 包源和刚刚创建的本地仓库的组合足以构建包工作所需的
vendor
目录。因此,在此阶段,我们可以禁用网络(不再需要网络访问),或者可以使用环境变量COMPOSER_DISABLE_NETWORK
设置为1
来禁用网络。 - 通过输入命令禁用Packagist:
composer config repo.packagist false
。 - 使用命令将新创建的本地
composer
仓库集成到composer.json
文件:composer config repo.local composer file:///path/to/local/reposity/packages.json
。 - 使用命令刷新锁文件:
composer update --lock --no-install --no-scripts --no-plugins --no-interaction
。 - 最后,通过输入命令安装包:
composer install
。
在Nix中
该插件用于在Nix中构建基于Composer的PHP包。源包和此插件构建的本地仓库的组合是独特的,Nix使用它来确保可重复性。
注意
默认情况下,Composer会创建到包的符号链接,如果您想复制包,请将环境变量COMPOSER_MIRROR_PATH_REPOS
设置为1