提问者:小点点

有没有一种方法可以选择性地要求本地composer包?


我有多个开发环境,其中一个本地包含我的包的源代码,另一个不包含。我希望单独配置我的环境,但我也希望composer知道,当存在时,它应该使用我的本地包,并使用packagist版本作为备用。

我试着在网上找这类东西,但找不到直接的答案。我已经知道如何需要本地包,但我不知道如何选择需要本地包。

只是重申一下,我想要求我的方案如下:

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

并且能够以某种方式将此包列为本地可用的包。如果我这样做:

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

我可以在本地要求它,但这意味着在我的其他开发环境中(包不存在本地,我也不希望它存在),作曲家将无法要求我的包。

一旦这样做了,我希望我的本地环境(包在本地托管的环境)需要包的本地版本,我希望我的其他环境(包在本地未托管的环境)需要包的packagist版本。

有什么想法吗?


共1个答案

匿名用户

我想你不想“可选要求”,因为套餐是必不可少的。您希望始终包含它,但仅在本地不可用时下载它。

本文描述了该程序: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不会检测到那里的库,并搜索其他来源,可能从回购服务器下载。