nunzion/composer-devlinks

允许开发者在非vendor目录的项目中自动加载类。这些链接可以替换vendor目录中的项目,并且不需要提交。

0.2.0 2014-05-18 12:52 UTC

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-mylibrarytest/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 --devcomposer update为两个项目生成自动加载器。现在,每当在test/me-myapp中加载"me/mylibrary"的类时,它将从test/me-mylibrary加载。

composer.links.dev.json文件不应被提交,因为这些开发链接仅应在开发期间定义。

作者

Henning Dieterichs - henning.dieterichs@hediet.de

许可证

Composer Devlinks遵循MIT许可证。