我有一个带有某些依赖性的Laravel项目。这些依赖性之一是我们自己的软件包。我需要在该软件包上工作。设置是我将包裹链接到git存储库。
供应商/acme/ourpackage->〜/ourpackagerepo
我在存储库中进行更改,提交并在父母中运行作曲家更新,以获取更新的Composer.lock。这曾经工作正常。但是,在我们从GitLab搬到GitHub之后,composer update acme/ourpackage
确实:
- 删除acme/ourpackage(dev-feature/fixeinformationlog fae89ac)
- 安装acme/ourepackage(dev-feature/fixeinformationLog 9BD7D4D):
,因此覆盖了符号链接!然后,我必须删除文件夹并创建一个新的符号链接以保持工作。这很麻烦,主要是因为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文件的任何想法
我认为您在这里有几个选择:
1。作曲家存储库路径
正如@loek指出的那样,您可以使用路径存储库。这存在于解决通常不属于VCS(GIT版本控制系统)或文件伪像的情况下的方案。根据文档,您会这样使用:
{
"repositories": [
{
"type": "path",
"url": "../../packages/my-package",
"options": {
"symlink": true
}
}
],
"require": {
"my/package": "*"
}
}
最重要的部分是:
如果可能的话,本地软件包将与 控制台中的输出将从 ../../packages/my-package。如果不可能,则包裹 将被复制。在这种情况下,控制台将从 ../../packages/my-package。
而不是默认的后备策略您可以强迫使用Symlink " symlink":true或以" symlink"镜像:false选项。强迫 从一个部署或生成包装时,镜像可能很有用 整体存储库。
这个选项对我来说是最有意义的,这是我个人所接受的。
2。多作曲家配置W/环境变量
另一种选择是使用此处所述的COMPOSER
环境变量。这将允许您加载与默认名称一个不同的composer.json
文件。因此,您可能有两个文件,并取决于您设置的环境变量,它将加载一个适当的文件并创建一个匹配的锁定文件:
- composer.json
- Composer-Dev.json
好吧,那为什么在世界上要这样做呢?好吧,由于您试图在本地处理软件包(具有主动符号链接)的方式,但不希望在生产中发生这种情况,因此,如果第一个选项不使用,则可能会起作用。
我应该注意,您的目标应该始终是在环境中使用相同的单个配置(即本地,分期,生产)。我知道您想在应用程序中立即查看对存储库的本地更改,并为每次更改进行提交/推拉的过程是荒谬的。
其他阅读/资源:
https://github.com/composer/composer/issues/601
https://github.com/composer/composer/issues/4011
https://github.com/franzliedke/studio