应配置path类型本地仓库并更新lock文件:在repositories中添加{"type": "path", "url": "./packages/my-local-package"},require中包名和版本须与本地包composer.json完全一致,再执行composer update --no-install确保composer.lock记录path源。

composer install 时提示 Could not fetch 怎么办
没网时 composer install 会卡在远程仓库拉取环节,核心不是“跳过”,而是让 Composer 把本地路径当包源用。关键在改 composer.json 的 repositories 和 require 声明,而不是删掉 vendor 或硬链接。
怎么配置本地包为替代源
必须显式声明一个 path 类型仓库,并确保本地包含有效的 composer.json(有 name、version、autoload 等基础字段)。Composer 不会自动识别任意文件夹为包。
建站之星网站建设系统是一种全新的互联网应用模式,它一改过去传统的企业建站方式,不需企业编写任何程序或网页,无需学习任何相关语言,也不需第三方代写或管理网站,只需应用系统所提供的各种强大丰富的功能模块,即可轻松生成企业个性化的精美网站。 SiteStar v2.3本地软件体验包说明:为方便客户能够第一时间体验智能建站软件的强大功能,我们特别提供了本地软件体验包,您只需下载下来并安装在您的计算机上(和
-
repositories数组里加一条:{"type": "path", "url": "./packages/my-local-package"} -
require中的包名必须和本地包composer.json里的name完全一致(比如"acme/utils": "dev-main") - 版本号要匹配:本地包
composer.json中version是"1.2.3",那就写"acme/utils": "1.2.3";若用分支,得是"dev-main"且本地有main分支 - 路径
url支持相对路径(推荐)或绝对路径,但不能是../跨出项目根目录,否则composer install会报Invalid path repository
为什么 composer update 还去连网络
因为默认行为仍会检查远程包元数据来判断是否需更新。断网时它失败后才回落到本地,但过程慢且易误判。解决方式是加 --no-update 配合 install,或提前用 composer update --lock 锁死版本再断网。
- 首次配置好本地源后,运行
composer update --no-install更新composer.lock,确保锁文件里记录的是path类型源 - 之后断网执行
composer install就能直接走本地,不碰网络 - 如果锁文件里还存着
packagist.org的地址,即使repositories改了也没用——Composer 优先信lock文件
常见坑:本地包 autoload 不生效或类找不到
不是路径配错,而是本地包的 autoload 没被主项目识别。Composer 的 path 仓库不会自动合并 autoload 配置,得靠主项目的 autoload 或 autoload-dev 手动包含。
- 检查本地包
composer.json是否有autoload,例如:{"autoload": {"psr-4": {"Acme\": "src/"}}} - 主项目
composer.json的autoload里要显式加上该命名空间映射,或运行composer dump-autoload重新生成自动加载器 - 如果本地包是
dev分支,且主项目require写的是"dev-main as 1.0.0",那composer install后vendor/acme/utils下实际是符号链接,不是复制——别手动删或改里面文件,否则链接失效
name 拼错、version 对不上、lock 文件没刷新,就会退回到连网失败的老路。最稳的做法:改完立刻 composer update --no-install,再 cat composer.lock | grep -A5 your-package-name 确认 source type 是 path。









