我刚开始使用Composer功能,你可以告诉它查看本地目录中的依赖项,这样你就可以开发一个库和一些并行使用该库的东西,而不必一直推送到git来更新,这太棒了。 e.g。
"repositories": [
{
"type": "vcs",
"url": "/documents/projects/github/guzzle"
}
],
"require":{
"guzzle/guzzle": "3.7.*@dev"
}
因此,当您进行作曲家更新时,Composer将从本地目录中提取Guzzle的版本,因此您可以在另一个使用该库的应用程序中测试库的代码,而无需在每个代码之间推送到存储库变化
然而,我几乎在composer.json中检查了我的项目 - 这显然不适用于任何elses机器。
无论如何要告诉作曲家使用与composer.json不同的文件,或以其他方式告诉作曲家安全地使用本地目录,而不会很有可能意外地将一个破碎的composer.json版本提交给你存储库
答案 0 :(得分:5)
使用COMPOSER
environment variable:
env COMPOSER=composer-dev.json composer install
实际上已有since at least 2012。
答案 1 :(得分:2)
您可以将选项--prefer-source
添加到composer install/update
命令,并删除本地存储库引用,而不是从其他位置的本地存储库获取。
这样作曲家会将git clone软件调用到供应商目录中,你可以开发你的软件并提交供应商软件,因为这也是一个完全正常工作的git repo。
实际上不建议添加本地存储库引用。当它用于真正的本地软件时它可以工作,但维护它有它的开销:你必须在每个将加载该软件的composer.json文件中提到这个存储库,即使它只是间接依赖(即你添加一个软件)需要此软件作为本地仓库中的依赖项)。
对存储库的URL进行硬编码也会阻止您随意更改它。即使你可以移动repo并相应地更改URL,你的软件的所有旧版本仍然在composer.json和composer.lock文件中都有旧的URL,并且会尝试从那里加载。
答案 2 :(得分:0)
看起来似乎没有办法在Composer中很好地完成这项工作,但是有可能破解它。
在您的composer.json文件中,您可以在某些数据中添加注释。
{
"name": "base-reality/intahwebz",
"//": "LOCALHACK",
"require":{
"base-reality/php-to-javascript": ">=0.1.17",
"guzzle/danackguzzle": "3.3.*@dev",
...
...
}
...
}
然后有一个单独的文件composer.local(未提交给Git),其中包含对本地目录的引用:
"LOCALHACK",
"repositories": [
{
"type": "vcs",
"url": "/documents/projects/github/intahwebz-core"
}
],
添加一个名为composerLocal.php
的小型PHP脚本来生成新的composer.json文件
<?php
$srcFile = file_get_contents("composer.json");
$hackFile = file_get_contents("composer.local");
$finalString = str_replace('"LOCALHACK",', $hackFile, $srcFile);
file_put_contents("composer.json", $finalString);
?>
一个名为localupdate.sh的小bash脚本备份真正的composer.json文件,生成被黑客攻击的composer.json,运行Composer然后恢复原始的composer.json文件
cp -f composer.json composer.json.bak
php composerLocal.php
composer update
cp -f composer.json.bak composer.json
运行localupdate.sh脚本允许您在本地测试提交,而不会有修改项目使用的实际composer.json文件的危险,因此不小心将无效的composer.json推入存储库的可能性更小。
请注意,Composer不读取存储库目录中的文件,它会读取Git中的提交文件,因此您需要提交对库代码所做的更改。上述过程只是跳过推进步骤。
答案 3 :(得分:0)
这也应该起作用:
composer config --file=composer2.json && composer install
答案 4 :(得分:-1)
简单,只需使用神器。
在存储库中添加:
{
"type": "artifact",
"url": "path/to/artifact/files/"
},
现在您只需创建目录并将存储库的副本压缩到该目录。
如下所示命名压缩文件:
[vendorname]-[packagename]-[version].zip
示例:
querypath-QueryPath-3.0.0.zip
现在您可以在本地修改包,它将从zip文件而不是在线仓库中提取。
在require中添加它,并指定zip中定义的版本:
"querypath/QueryPath": "3.0.0",
使用此方法,您将能够编辑供应商文件,并且编辑器仍将更新相对于更改的任何自动加载器,它将仅保留您的更改。