零带宽消耗安装 Composer 包的唯一可行路径是 path 类型仓库,因其跳过所有远程请求、不下载不解压不联网,仅做符号链接或本地复制;它要求本地含合法 composer.json、repositories 显式声明 type=path、require 的包名与 name 字段逐字符一致。

Composer 不支持用本地路径当 Packagist 镜像源,所谓“本地镜像”是常见误解。你真正能用的,只有 path 类型仓库——它不代理整个包生态,只让某个指定包从本地加载。
为什么composer.json里写"url": "../my-package"却找不到包?
根本原因不是路径错,而是匹配链断了三处:
-
url值必须用双引号包裹,写成"../my-package",不能是../my-package(JSON 解析失败) - 本地包自己的
composer.json必须有"name": "vendor/name",且和主项目require中的键完全一致 - 本地包没 Git 初始化或没写
"version": "dev-main",Composer 无法推断可用版本,"*"就会失效
composer require vendor/name装完却是硬拷贝,改代码不生效?
默认行为就是复制(Windows)或硬链接(Linux/macOS),不是符号链接。要实时生效,必须显式启用 symlink:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 在
repositories的path条目里加"options": {"symlink": true} - Linux/macOS 无需额外权限;Windows 需管理员权限或开启“开发者模式”,否则
mklink失败 - 执行
composer update vendor/name后检查vendor/vendor/name是否为符号链接(ls -la看箭头),不是文件夹
autoload 映射对了,new MyClass() 还报 Class not found?
本地包的自动加载配置只在它被安装时读取一次,后续修改不会自动同步:
- 改了本地包的
autoload段(比如 PSR-4 路径变了),必须先composer remove vendor/name,再composer require vendor/name -
composer dump-autoload对已安装的path包无效——它只刷新主项目的 autoload,不触达 vendor 下的 symlink 目录 - 确认类文件实际路径与
autoload声明严格对应,例如"MyVendor\": "src/"就要求类文件在../my-package/src/MyClass.php
能不能把 path 仓库设成全局,一劳永逸?
不能。Composer 全局配置(composer config --global)只影响镜像源、缓存路径、GitHub Token 等运行时参数,repositories 是项目级契约,必须写在每个项目的 composer.json 里。
有人试图在全局 config.json 里塞 repositories,结果发现 composer require 依然报错——因为 Composer 2.x 完全忽略全局配置中的 repositories 字段。开发多个本地包时,得逐个项目配,或者用脚本批量注入。

















