我有一个带有某些依赖项的Laravel项目。这些依赖项之一是我们自己的程序包。我需要在那个包装上做工。设置是我将软件包符号链接到git存储库。
供应商/ acme /我们的包裹->〜/ ourpackagerepo
我在存储库中进行更改,提交并在父级中运行Composer update以获得更新的composer.lock。过去工作正常。但是在我们从Gitlab迁移到Github之后,composer update acme/ourpackage
做到了:
因此覆盖了符号链接!然后,我必须删除该文件夹并创建一个新的符号链接以继续工作。这很麻烦,主要是因为PHPStorm需要重新编制索引。
composer.json中的代码段:
"repositories": [{
"type": "vcs",
"url": "git@github.com:acme/package.git"
"config": {
"preferred-install": "dist",
"platform": {
"php": "7.0.12"
},
"use-github-api": false
关于如何使作曲家仅更新或仅保留tha文件而仅更新composer.lock的任何想法?
答案 0 :(得分:1)
我认为您在这里有几个选择:
与pointed out by @Loek一样,您可以使用 path 存储库。存在这个问题是为了解决通常不属于VCS(Version Control System,例如Git)或文件工件的情况。根据文档,您可以像这样使用它:
{
"repositories": [
{
"type": "path",
"url": "../../packages/my-package",
"options": {
"symlink": true
}
}
],
"require": {
"my/package": "*"
}
}
要注意的最重要部分是:
如果可能,本地软件包将被符号链接,在这种情况下, 控制台中的输出将读取来自 ../../packages/my-package。如果无法进行符号链接,则包装 将被复制。在这种情况下,控制台将输出Mirrored from ../../ packages / my-package。
您可以强制使用符号链接代替默认的后备策略 “ symlink”:是,否则为“ symlink”:false选项的镜像。强迫 从部署或生成软件包时,镜像很有用 整体存储库。
此选项对我来说最有意义,这也是我个人会使用的选项。
另一种选择是使用COMPOSER
环境变量as described here。这样,您就可以加载与默认文件名不同的composer.json
文件。因此,您可能有两个文件,并且取决于您将环境变量设置为哪个文件,它将加载适当的文件并创建一个匹配的锁定文件:
好,那么为什么您要在世界上这样做呢?好吧,由于您尝试在本地处理软件包的方式(使用活动的符号链接),但又不想在生产中发生这种情况,如果第一种方法不可行,则可能会起作用。
我应该注意,您的目标应该始终是拥有一个跨环境(即本地,暂存,生产)相同配置的配置。我了解您希望立即在应用程序中看到存储库的本地更改,并且对每个更改都进行提交/推送/拉动的过程很可笑。