信息发布→ 登录 注册 退出

如何将本地文件夹作为Composer的artifact仓库使用?

发布时间:2025-12-25

点击量:
可以直接将本地文件夹配置为Composer的artifact仓库,需用ZIP/TAR归档(非源码目录),归档内路径须为“包名-版本号”,composer.json中version须与文件名一致,url须为绝对路径。

可以直接把本地文件夹配置为 Composer 的 artifact 仓库,适合离线环境、快速测试或临时发布未托管的包。关键在于用 artifact 类型仓库指向一个包含 ZIP/TAR 归档文件的目录,而不是源码目录。

准备归档包文件

Composer 的 artifact 仓库不接受原始代码文件夹,只识别压缩包(.zip.tar.tar.gz.tgz)。你需要先打包你的包:

  • 确保包根目录下有有效的 composer.json(含 nameversionautoload 等必要字段)
  • 在包根目录外执行打包命令,例如:
    zip -r myvendor/mypackage-1.0.0.zip mypackage/
    注意:ZIP 内部路径应以包名+版本号为顶层目录(如 myvendor/mypackage-1.0.0/),否则可能 autoload 失败
  • 把生成的 ZIP 文件放入一个专用文件夹,比如 /path/to/artifacts/

配置 composer.json 使用 artifact 仓库

在你主项目的 composer.json 中添加 repositories 配置:

{
  "repositories": [
    {
      "type": "artifact",
      "url": "/path/to/artifacts/"
    }
  ],
  "require": {
    "myvendor/mypackage": "^1.0"
  }
}

⚠️ 注意:url 必须是绝对路径(Linux/macOS)或 Windows 绝对路径(如 C:/artifacts/),不能是相对路径;该路径末尾斜杠可选但建议加上。

安装与更新行为说明

运行 composer installcomposer update 时:

  • Composer 会扫描 url 目录下所有支持格式的归档文件,提取其中的 composer.json 来构建可用包列表
  • 匹配 require 中的包名和版本约束(如 ^1.0 会匹配 1.0.01.0.1
  • 自动解压匹配的归档到 vendor/,行为与 Packagist 安装一致
  • 如果新增了归档文件,需运行 composer update --lock 或删掉 composer.lock 重新 install 才能识别新版本

常见问题提示

不要把源码目录直接当 artifact 用 —— artifact 不支持 git/svn 路径或文件夹直连;
归档内 composer.json 的 version 字段必须与文件名中的版本一致(如 mypackage-1.2.3.zipcomposer.json "version": "1.2.3");
多个版本可共存于同一 artifact 目录,无需子目录结构。

标签:# require  # 应以  # 新版本  # 不接受  # 压缩包  # 可选  # 不支持  # 要把  # 多个  # 离线  # 可以直接  # svn  # linux  # cos  # 常见问题  # win  # 解压  # macos  # mac  # windows  # composer  # json  # git  # js  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!