Composer不存在离线镜像源,所谓“离线镜像”实为本地静态仓库方案:可用Satis生成静态包镜像(需联网构建后离线使用)、path仓库引用本地包、或复用vendor目录配合--no-install实现准离线。

Composer离线镜像源根本不存在
Composer 本身不支持“离线镜像源”——镜像源本质是远程 HTTP/HTTPS 服务,离线状态下无法访问。你真正需要的,是「本地可离线使用的包仓库」,常见于内网环境、CI 构建隔离或断网开发场景。
用 composer install --no-install + vendor/ 备份实现准离线
这不是配置镜像,而是跳过网络请求,直接复用已有依赖。适用于已有完整 vendor/ 的项目迁移或临时断网:
- 确保目标机器上已存在完整的
vendor/目录(含所有包及.dist文件) - 运行
composer install --no-scripts --no-plugins,它会跳过包下载和脚本执行,仅校验composer.lock与vendor/一致性 - 若提示
Package x is not installed,说明vendor/缺失或版本不匹配,需重新同步而非“配置镜像”
用 composer archive 打包私有包供离线部署
如果你控制着部分私有包(如公司内部 SDK),可用 Composer 自带归档功能生成离线可用的 ZIP:
- 在有网环境下进入包根目录,运行
composer archive --format=zip --dir=dist/ - 生成的 ZIP 包含代码 +
composer.json,可手动解压到目标机vendor/your-vendor/name/ - 然后在主项目中将该包设为
path类型仓库:{ "repositories": [ { "type": "path", "url": "./vendor/your-vendor/name" } ] } - 注意:
path仓库不走网络,但要求路径存在且含有效composer.json;composer update会触发软链接(Linux/macOS)或复制(Windows)
用 Satis 搭建本地静态镜像(最接近“离线镜像”的方案)
Satis 是官方推荐的静态包镜像工具,它把远程包下载后生成静态 HTML + ZIP + packages.json,之后完全离线可用:
- 先全局安装:
composer global require composer/satis - 写
satis.json,指定要镜像的包:{ "name": "my-offline-mirror", "homepage": "http://localhost/satis", "repositories": [ { "type": "composer", "url": "https://packagist.org" } ], "require-all": true, "output-dir": "web/" } - 运行
satis build satis.json web/—— 这步必须联网,耗时长,生成结果全在web/下 - 把整个
web/目录拷到离线机器,用 PHP 内置服务器启动:php -S localhost:8000 -t web/ - 最后在项目中配置:
composer config repositories.packagist.org.url http://localhost:8000
这个方案真正实现了“镜像”,但 Satis 生成的包不包含 Git 元数据,也不支持 dev- 分支别名;更新镜像仍需联网重跑 satis build,不能增量同步。











