必须用 repositories 声明 path 类型源,且本地包的 name、路径、版本三者严格对齐,否则 Composer 无法识别;需配置 symlink 选项并执行 composer update 才能实时生效,且本地包须有合法 composer.json、psr-4 映射及 git commit。

必须用 repositories 声明 path 类型源,且本地包的 name、路径、版本三者严格对齐,否则 Composer 根本“看不见”你的目录。
为什么 composer require vendor/name:dev-main 总报 “Could not find package”
根本不是网络或缓存问题,而是 Composer 没扫描到你的本地目录。它只从 repositories 数组里找源,require 字段只是声明需求,不负责定位。
-
repositories必须写在项目根目录的composer.json最外层,不能嵌套进extra或缩进错位 -
url值必须是相对路径(如"../my-utils"),绝对路径在 Windows 上极易静默失败 - 本地包目录下必须有合法
composer.json,且其中name字段(如"acme/utils")要和require语句里写的完全一致(大小写敏感) - 版本必须用
dev-main、dev-develop这类分支名,不能写"1.0.0"或留空——path源下version字段被忽略
怎么让改完本地代码立刻在主项目生效
默认行为是复制(copy),不是链接(symlink)。你改了 ../my-utils/src/Helper.php,vendor/acme/utils/Helper.php 仍是旧文件。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 在项目
composer.json的对应repositories条目里加"options": {"symlink": true} - 执行
composer update acme/utils(不是dump-autoload),才会重建符号链接 - 验证:Linux/macOS 下运行
ls -la vendor/acme/utils应显示->箭头;Windows 下用dir vendorcmeutils看是否为“快捷方式”类型 - Windows 用户需开启开发者模式或以管理员权限运行命令行,否则 symlink 创建失败且无提示
psr-4 映射不生效?别怪 Composer,先检查本地包自己的 autoload
Composer 只负责把本地包装进 vendor/,但类能不能自动加载,取决于本地包自己有没有配好 autoload。
- 本地包的
composer.json中必须有合法psr-4配置,例如:"psr-4": {"Acme\Utils\": "src/"}(注意双反斜杠) - 主项目执行过
composer dump-autoload后,新命名空间才会注册进自动加载器 - 如果本地包提供了 Laravel Service Provider,仍需手动在
config/app.php的providers数组中注册——Composer 不处理这部分 - 别在
require 'vendor/autoload.php'之前就实例化类,也别用相对路径引入 autoload 文件
最常被忽略的点:本地包目录必须已运行 git init 并至少有一个 commit,否则 Composer 拒绝加载;path 类型源跳过所有元数据请求,快但脆弱,配置错一个字符就静默失效。

















