Composer选项使用composer.json的替代方法?

Dan*_*ack 6 composer-php

我刚开始使用Composer功能,你告诉它查看本地目录中的依赖项,这样你就可以开发一个库和一些并行使用该库的东西,而不必一直推送到git来更新,这是真棒.例如

"repositories": [
    {
        "type": "vcs",
        "url": "/documents/projects/github/guzzle"
    }
],

"require":{
    "guzzle/guzzle": "3.7.*@dev"
}
Run Code Online (Sandbox Code Playgroud)

因此,当您进行作曲家更新时,Composer将从本地目录中提取Guzzle的版本,因此您可以在另一个使用该库的应用程序中测试库的代码,而无需在每次代码更改之间推送到存储库.

但是我几乎在composer.json中检查了我的项目 - 这显然不适用于任何elses机器.

反正有没有告诉作曲家使用不同于composer.json的文件,或者其他方式能够告诉作曲家安全地使用本地目录,而不是很有可能意外地将一个破碎的composer.json版本提交到你的存储库?

aro*_*oss 5

使用COMPOSER环境变量:

env COMPOSER=composer-dev.json composer install
Run Code Online (Sandbox Code Playgroud)

至少从2012年开始提供.


Sve*_*ven 2

--prefer-source您可以将选项添加到命令并删除本地存储库composer install/update引用,而不是从其他地方的本地存储库获取。

这样,composer 就会调用 git 将软件克隆到供应商目录中,您可以开发您的软件并提交给供应商软件,因为这也是一个完全工作的 git 存储库。

不建议添加本地存储库引用。当将它们用于真正的本地软件时,它可以工作,但维护它有一定的开销:您必须在每个将加载该软件的composer.json文件中提及此存储库,即使它只是间接依赖项(即您添加一个软件)需要此软件作为本地存储库中的依赖项)。

对存储库的 URL 进行硬编码还可以防止您随意更改它。即使您可以移动存储库并相应地更改 URL,所有旧版本的软件在composer.json 和composer.lock 文件中仍然具有旧的URL,并且会尝试从那里加载。