我有多个开发环境,其中一个本地包含我的包的源代码,另一个不包含。我希望单独配置我的环境,但我也希望composer知道,当存在时,它应该使用我的本地包,并使用packagist版本作为备用。
我试着在网上找这类东西,但找不到直接的答案。我已经知道如何需要本地包,但我不知道如何选择需要本地包。
只是重申一下,我想要求我的方案如下:
"require": {
"php": "^7.1.3",
/* ... */
"my-namespace/my-package": "dev-master",
},
并且能够以某种方式将此包列为本地可用的包。如果我这样做:
"repositories": [
{
"type": "path",
"url": "./path/to/my/package"
},
]
我可以在本地要求它,但这意味着在我的其他开发环境中(包不存在本地,我也不希望它存在),作曲家将无法要求我的包。
一旦这样做了,我希望我的本地环境(包在本地托管的环境)需要包的本地版本,我希望我的其他环境(包在本地未托管的环境)需要包的packagist版本。
有什么想法吗?
我想你不想“可选要求”,因为套餐是必不可少的。您希望始终包含它,但仅在本地不可用时下载它。
本文描述了该程序: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不会检测到那里的库,并搜索其他来源,可能从回购服务器下载。