在 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"
}
],
添加一个很小的 PHP 脚本composerLocal.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 中提交的文件,因此您确实需要提交对库代码所做的更改。上述过程只是跳过了推送步骤。