私有仓库必须显式声明为vcs类型,否则composer require会报“Could not find a matching version”;正确配置为{"type":"vcs","url":"https://gitlab.example.com/myorg/mylib.git"},且URL须指向带.git后缀的裸仓库。

私有仓库必须显式声明为 vcs 类型,否则 composer require 会报 Could not find a matching version of package
私有库必须在 repositories 中声明 type: "vcs"
Composer 不会从 URL 自动推断仓库类型。写 "https://gitlab.example.com/myorg/mylib.git" 到 repositories 数组里是无效的——它会被当成普通 HTTP 源,根本不会尝试 clone。
- 正确写法是嵌套对象:
{"type":"vcs","url":"https://gitlab.example.com/myorg/mylib.git"} -
url必须指向裸仓库(bare repo),结尾带.git;不能是 GitLab 的 Web UI 路径(如/mylib/-/tree/main) - 若用 HTTPS 认证,需提前配置
http-basic;若用 SSH,URL 应为git@gitlab.example.com:myorg/mylib.git
多项目共享时,版本必须靠标签,不能依赖 dev-main
私有库没发到 Packagist,Composer 默认只认 dev-main 这类开发分支,1.2.0 这样的 tag 默认不被识别为可安装版本。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 私有库打 tag(如
v1.2.0)后,主项目才能写"myorg/mylib": "^1.2" - 主项目的
config段必须设"minimum-stability":"stable"和"prefer-stable":true,否则composer require可能装上dev-main,而别人composer install时因稳定性不一致失败 - CI 构建中若用
--no-interaction却没锁死版本(比如只写"myorg/mylib": "dev-main"),结果不可控
用 git subtree 同步时,vendor 和 autoload 必须隔离
把私有库以 git subtree add 拉进 lib/mylib 后,直接在项目根目录跑 composer install,会导致该库被装进主项目的 vendor/,引发命名空间冲突、Class not found、CI 失败。
- 必须进入子目录单独操作:
cd lib/mylib && composer install --no-autoloader --no-scripts - 子目录下的
composer.json需显式指定"vendor-dir": "vendor"(路径相对自身) - 主项目不能自动加载子目录里的类——PSR-4 映射要分开注册,或由主项目
autoload-dev手动 include
最易被忽略的是:私有库的 composer.json 里加 minimum-stability 完全无效;真正起作用的是主项目的 config 段。跨项目共享不是“拉代码就完事”,而是稳定性策略、版本发布节奏和 autoload 边界三者必须对齐。

















