nunzion / composer-devlinks
允许开发者在非vendor目录的项目中自动加载类。这些链接可以替换vendor目录中的项目,并且不需要提交。
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2024-09-09 02:19:02 UTC
README
Composer Devlinks在Composer生成vendor/autoload.php
文件后自动修改该文件,并将自定义自动加载器(定义在名为composer.links.dev.json
的文件中)的引用注入其中。这些自动加载器可以将类映射到不同的源,从而可以通过本地版本替换引用的包。
安装
要将Composer Devlinks添加到项目中,只需在项目的composer.json
文件中添加对nunzion/composer-devlinks的开发依赖,并添加一个脚本来包含链接的自动加载器。
{
"require-dev": {
"nunzion/composer-devlinks": "*"
},
"scripts": {
"post-autoload-dump": "Nunzion\\Composer\\DevLinks\\Commands::includeLinkedAutoloaders"
}
}
即使composer-devlinks
在非开发安装中缺失,Composer在尝试运行脚本时也不会抛出任何错误。
使用方法
如果您想包含您的自动加载器,可以在与composer.json
文件相同的目录中创建一个名为composer.links.dev.json
的文件。
{
"links": [
"../my-package/vendor/autoload.php"
]
}
所有链接都与composer.json
相对,也可以指定绝对路径。如果链接不以.php
结尾,将自动追加/vendor/autoload.php
。
如果找不到链接的自动加载器或composer.links.dev.json
文件,不会抛出任何错误。
示例
假设您正在开发一个名为"me/myapp"的应用程序,它依赖于您的composer包"me/mylibrary"。在编程"me/myapp"时,您想不断改进和扩展"me/mylibrary"。
没有Composer Devlinks,您必须编辑"me/mylibrary",在"me/myapp"安装的vendor目录中。显然这不是一个好主意——一旦"me/mylibrary"更新,您运行composer update
,您的更改最终会丢失。
有了Composer Devlinks,您可以将"me/mylibrary"和"me/myapp"分别克隆到不同的目录中,例如test/me-mylibrary
和test/me-myapp
。然后,您可以按照上述说明编辑test/me-myapp
目录中的composer.json
文件。此composer.json
更改可以提交到您的git存储库。下一步,您可以在test/me-myapp
目录中创建一个名为composer.links.dev.json
的文件,以定义指向test/me-mylibrary
的开发链接,内容如下:
{
"links": [
"../me-mylibrary"
]
}
最后,运行composer install --dev
或composer update
为两个项目生成自动加载器。现在,每当在test/me-myapp
中加载"me/mylibrary"的类时,它将从test/me-mylibrary
加载。
composer.links.dev.json
文件不应被提交,因为这些开发链接仅应在开发期间定义。
作者
Henning Dieterichs - henning.dieterichs@hediet.de
许可证
Composer Devlinks遵循MIT许可证。