dex / composer-plug-and-play
Composer 的即插即用包
Requires
- php: ^8.1
- composer-plugin-api: ^2.3
- ext-json: *
Requires (Dev)
- composer/composer: ^2.3.0
- laravel/pint: ^1.7
- pestphp/pest: ^2.34
- pestphp/pest-plugin-drift: ^2.5
README
将 Composer(PHP 依赖管理器)添加到项目中,以实现无需在 composer.json
中安装新依赖即可插即用包的功能。
安装
Composer Plug and Play 需要 Composer 2.3.0
或更高版本。
composer require dex/composer-plug-and-play
全局安装
您可以将 Composer Plug and Play 全局安装,以便在所有本地项目中使用其功能。
composer global require dex/composer-plug-and-play
使用方法
初始化即插即用结构
composer plug-and-play:init
将 Composer 包创建或克隆到 packages/<vendor>/<package>
文件夹,并运行
composer plug-and-play
附加配置
您可以在 packages/composer.json
中添加一些附加配置,以在 composer.json
文件的最终解析中添加更多数据。
命令
所有命令都将使用 plug-and-play.json
和 plug-and-play.lock
文件作为项目依赖的源,而不是使用原始的 composer.json
和 composer.lock
文件。
您可以使用 composer pp
和 composer pp:*
作为所有命令的别名。
plug-and-play
:安装即插即用依赖和项目依赖。plug-and-play:add
:将包添加到packages/composer.json
。plug-and-play:dump
:等同于composer dump-autoload
,但使用plug-and-play
文件。plug-and-play:init
:初始化即插即用插件。plug-and-play:install
:等同于composer install
,但使用plug-and-play
文件。plug-and-play:reset
:删除plug-and-play
文件。plug-and-play:run
:等同于composer run-script
,但使用plug-and-play
文件。plug-and-play:update
:等同于composer update
,但使用plug-and-play
文件。
目录和文件
Composer Plug and Play 插件需要在项目根目录中创建一个 packages
文件夹,其中将包含即插即用结构。
plug-and-play.json
和 plug-and-play.lock
文件将包含真实的项目依赖和即插即用依赖。
您的项目目录将如下所示
|- packages
| |- <vendor-name>
| | |- <plug-and-play-package>
| | |- composer.json
| | |- composer.lock
| |- composer.json
| |- plug-and-play.json
| |- plug-and-play.lock
|
|- vendor
| |- <vendor-name>
| |- <require-package>
| |- composer.json
| |- composer.lock
|
|- composer.json
|- composer.lock
忽略已插包
有时您可能需要忽略一个正在开发中的包,为此,在 packages/composer.json
中添加类似以下内容并运行 composer plug-and-play
。
{ "extra": { "composer-plug-and-play": { "ignore": [ "dex/fake" ] } } }
从已插包中要求开发依赖
在开发某些包或库时,您可能需要要求其开发依赖,为此,在 packages/composer.json
中添加类似以下内容并运行 composer plug-and-play
,将安装 require-dev
依赖。
{ "extra": { "composer-plug-and-play": { "require-dev": [ "dex/fake" ] } } }
自动加载(策略)
当在另一个应用或包内部开发包时,您可能会遇到与符号链接和递归有关的问题,为此,您可以使用 experimental:autoload
策略。
此策略将在 packages/vendor
目录中创建你的 composer.json
的简单副本,以便从原始的 vendor
目录进行符号链接。
要激活它,你应该更改你的 packages/composer.json
。
{ "extra": { "composer-plug-and-play": { "autoload-dev": ["dex/fake"], "require-dev": ["dex/fake"], "strategy": "experimental:autoload" } } }
你必须将你想要映射其自动加载的包添加到 autoload-dev
中,并将你想要要求其开发依赖的包添加到 require-dev
中。
许可证
Composer Plug and Play 在 MIT 许可证下授权。有关更多详细信息,请参阅 许可证文件。