有没有一种方法可以选择需要本地作曲家软件包?

时间:2019-09-05 13:33:34

标签: php composer-php

我有多个开发环境,其中一个在本地包含我的软件包的源代码,而另一个则没有。我想分别配置我的环境,但是我也想让作曲家知道它在存在时应该使用我的本地软件包,并使用packagist版本作为后备。

我试图在网上寻找这种东西,但找不到直接答案。我已经知道如何要求本地软件包,但是我不知道如何可选要求本地软件包。

只需重申一下,我想像这样要求我的包裹:

"require": {
    "php": "^7.1.3",
    /* ... */
    "my-namespace/my-package": "dev-master",
},

并且能够以某种方式列出此软件包,因为有时在本地可用。如果我这样做:

"repositories": [
    {
        "type": "path",
        "url": "./path/to/my/package"
    },
]

我可以将其设置为本地必需,但这意味着在我的其他开发环境中(该软件包在本地不存在,也不希望它存在),composer将无法要求我的软件包。

说完这句话后,我希望我的本地环境(一个本地托管我的软件包的环境)需要该软件包的本地版本,并且我希望我的另一个环境(一个本地没有我的软件包的环境)托管)以要求该软件包的包装版本。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为您不希望“有选择地要求”,因为包装是必不可少的。您希望始终包含它,但是只有在本地不可用时才下载它。

本文介绍了该过程:https://johannespichler.com/developing-composer-packages-locally/

简而言之:您在应用程序中添加了一个指向本地库存储库的“存储库”条目:

"repositories": {
  "dev-package": {
    "type": "path",
    "url": "relative/or/absolute/path/to/my/dev-package",
    "options": {
      "symlink": true
    }
  }
}

“ URL”指向您本地lib存储库的路径。 options.symlink很重要,否则Composer将复制该回购而不是对其进行符号链接(迫使您不断更新该副本而不是自动获取所有更改)。

在其他计算机上,路径指向无处,Composer不会在此处检测到lib,而是搜索其他源,可能是从回购服务器下载了它。