0

0

Composer的archive-format和archive-dir配置项如何使用? (自定义打包)

穿越時空

穿越時空

发布时间:2026-01-11 15:39:22

|

545人浏览过

|

来源于php中文网

原创

archive-format 控制 composer archive 命令生成的压缩包格式,合法值仅有 zip 和 tar;archive-dir 指定输出路径,相对于项目根目录,需手动创建父目录,字段实际为 format 和 directory,位于 composer.json 的 archive 对象内。

composer的archive-format和archive-dir配置项如何使用? (自定义打包)

archive-format 是什么,哪些值合法

archive-format 控制 composer archive 命令生成的压缩包格式,它不是全局配置项,只能在 composer.jsonarchive 段中定义。合法值只有两个:ziptar(注意不支持 tar.gztgz 等变体)。

如果设为其他值(比如 gzip),Composer 会静默忽略,回退到默认的 zip,不会报错也不会警告——这点容易踩坑。

  • Windows 用户建议用 zip(兼容性最好)
  • Linux/macOS 部署场景若需与 tar 工具链配合,可选 tar,但要注意解压时得用 tar -xf 而非 unzip
  • 不能写成 .zipzip+,只接受纯字符串 ziptar

archive-dir 怎么指定输出路径,相对路径怎么算

archive-dir 决定打包文件写入的位置,也是仅在 composer.jsonarchive 段中生效。它的值是相对于项目根目录(即 composer.json 所在目录)的路径。

例如设置 "archive-dir": "dist",最终包会生成在 ./dist/my-package-1.0.0.zip;设为 "archive-dir": "../releases",则输出到上层目录的 releases/ 下。

Ideogram
Ideogram

Ideogram是一个全新的文本转图像AI绘画生成平台,擅长于生成带有文本的图像,如LOGO上的字母、数字等。

下载
  • 路径末尾不加斜杠也行,Composer 会自动处理
  • 目录不存在时,Composer 不会自动创建,会直接报错:Could not create archive: failed to open stream: No such file or directory
  • 不支持环境变量(如 $HOME/dist)或波浪号(~/dist),必须是纯相对或绝对路径

如何在 composer.json 中正确配置这两个选项

它们必须一起放在 archive 对象里,不能放到 config 或根级。常见错误是把它们误当成全局配置写进 ~/.composer/config.json——那完全无效。

{
    "name": "myvendor/mypackage",
    "version": "1.0.0",
    "archive": {
        "format": "tar",
        "directory": "build/artifacts"
    }
}

注意字段名是 formatdirectory,不是 archive-formatarchive-dir——文档里写的“archive-format”只是说明用途的描述性名称,实际 key 就是这两个简短形式。

  • 执行打包命令:composer archive(无需额外参数)
  • 若想临时覆盖配置,可用 --format=zip--dir=dist 命令行选项,优先级高于 JSON 配置
  • 该功能只对本地项目有效,不作用于 require 的依赖包

打包时容易被忽略的细节

Composer 的 archive 功能本质是 zip/tar 当前项目源码(不含 vendortests 等默认排除项),不是构建产物。它不运行 scripts,也不触发 autoload-dump,所以别指望它生成可直接运行的发布包。

  • archive 不读取 .gitattributesexport-ignore,只认 Composer 自己的 archive.excludes 配置(需手动加)
  • 如果项目用了 path 仓库类型,composer archive 仍会打包当前目录内容,不会去拉取 path 指向的真实路径
  • 没有内置的版本号模板(如 {version} 占位符),生成的文件名固定为 {name}-{version}.{format},无法自定义前缀或后缀

相关专题

更多
composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

148

2023.12.25

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

408

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

532

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

309

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

74

2025.09.10

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

430

2024.06.27

require的用法
require的用法

require的用法有引入模块、导入类或方法、执行特定任务。想了解更多require的相关内容,可以阅读本专题下面的文章。

464

2023.11.27

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

80

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7万人学习

Git 教程
Git 教程

共21课时 | 2.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号