可用artifact仓库实现:将含合规composer.json的zip放入指定目录,在composer.json中配置artifact类型仓库并指向该目录父路径,再通过composer require精确安装。

怎么用 Composer 从本地 zip 文件安装包
Composer 本身不支持直接 require 一个本地 zip 文件路径(比如 ./package.zip),硬写会报错 Could not find a matching version of package xxx。必须把它“伪装”成一个合法的 Composer 包源,核心是靠 artifact 类型仓库。
为什么 artifact 仓库能行,而 path 仓库不行
path 仓库只认目录,不认 zip;artifact 仓库专为离线/预打包场景设计,它会在安装时自动解压 zip、读取里面的 composer.json,并按其中定义的 name 和 version 注册包。但前提是 zip 包结构合规:
- zip 根目录下必须有
composer.json -
composer.json中必须有name(格式如vendor/name)和version(不能是dev-main这类分支别名) - 不要把整个 Git 仓库 zip 打包后直接用——Git 的
.git目录和顶层目录名会导致路径错乱
配置 artifact 仓库的实操步骤
在项目根目录的 composer.json 中添加 repositories 段,指向 zip 所在的**父目录**(不是 zip 文件本身):
{
"repositories": [
{
"type": "artifact",
"url": "./packages/"
}
]
}
然后把你的 my-package-1.2.0.zip 放进 ./packages/ 目录。执行:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
composer require vendor/my-package:1.2.0
注意:vendor/my-package 必须和 zip 内 composer.json 的 name 完全一致,版本号也必须精确匹配(1.2.0,不能写 ^1.2,artifact 不支持版本约束解析)。
常见报错和绕不过去的坑
装不上?大概率卡在这几个点:
-
Package vendor/my-package has a PHP requirement incompatible with your PHP version:zip 里的composer.json声明了高版本 PHP,但你本地没满足——改本地 PHP 版本,或改 zip 里require.php的值 -
Could not find package vendor/my-package at any version:检查 zip 是否真在url指定目录下;再检查 zip 内composer.json的name和version是否拼写正确、无空格、无大小写混淆 - 装完发现类找不到:zip 解压后实际代码路径和
autoload配置对不上——确保composer.json里autoload的psr-4或files路径是相对于 zip 解压后的根目录
artifact 仓库不会校验签名,也不支持更新机制,每次换包都得手动替换 zip 文件。真要长期维护,不如搭个私有 Packagist 或 Satis。

















