nix-community / composer-local-repo-plugin
一个为Composer提供的插件,用于创建本地Composer仓库。
1.1.0
2024-03-05 12:27 UTC
Requires
- php: >= 7.2
- composer-plugin-api: ^2
Requires (Dev)
- composer/composer: ^2.6 || ^2.7
- phpunit/phpunit: ^8
README
此插件是为Composer构建的,它简化了从现有包创建本地composer
类型仓库的过程(参考文档)。基本上,这个插件允许您在“离线”模式下使用Composer。
仓库类型composer
与Packagist使用的格式相同。它使用特定的结构,包括名为packages.json
的清单文件和独特的目录结构。仓库中每个包版本都有自己的对应源。
该插件旨在以可重复的方式安装PHP包,因此在创建仓库后不再需要网络访问。
该插件目前在Nix中使用。更多详细信息可以在相应的PR中找到,标志着项目的起点。
该项目受到了fossar/composition-c4
的Jan Tojnar的强烈启发。
要求
- Composer 2
安装
全局安装插件一次
composer global require nix-community/composer-local-repo-plugin
用法
使用更新的composer.lock
文件(推荐)
- 导航到包目录,或使用
--working-dir
选项。 - 确保存在
composer.json
和composer.lock
文件。 - 使用以下命令生成本地仓库:
composer build-local-repo-lock /path/to/local/repository
。这将创建指定目录中的本地composer
仓库,并在同一位置生成更新的文件composer.lock
。使用-r
或-m
选项仅生成仓库或composer.lock
,分别。有关更多详细信息,请参阅命令帮助:composer build-local-repo-lock --help
。 - 包源和刚刚创建的本地仓库的组合现在足够严格,可以构建工作所需的
vendor
目录。因此,在这个阶段,我们可以禁用网络访问,因为不再需要进一步的网络访问,或者您可以使用环境变量COMPOSER_DISABLE_NETWORK
设置为1
来这样做。 - 将更新的
composer.lock
文件复制到包目录:cp /path/to/local/reposity/composer.lock .
- 最后,通过输入命令:
composer install
安装包。
使用Composer仓库类型(自Composer 2.7以来已弃用)
注意:由于Composer 2.7,此方法已弃用,因为它不再起作用。更多信息请参阅composer/composer#11850
- 导航到包目录,或使用
--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。