防止作曲家更新以重新安装



我有一个带有某些依赖性的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

相关内容

  • 没有找到相关文章

最新更新