composer 没有 archive 命令,也不提供内置打包功能;所谓“自定义打包输出路径”是误用不存在的功能,执行 composer archive 必报错“command 'archive' is not defined”。

Composer 没有 archive 命令,也**不提供任何内置的打包功能**——所谓“自定义打包输出路径”,本质是误用了不存在的功能。
执行 composer archive 一定报错
直接运行会得到明确错误:Command "archive" is not defined。这不是配置问题,是命令根本不存在。Composer 2.x 官方文档、composer help 输出、源码中均无该命令。所有你见过的“成功案例”,要么是:
- 装了第三方插件(如
hirak/php-archive),行为完全由插件实现,与 Composer 无关 - 项目
composer.json的scripts里定义了同名脚本,实际调用的是zip或tar - 混淆了
git archive或 CI 脚本里的手动归档逻辑
真正可控的打包方式:分场景手写命令
打包不是 Composer 的职责,但你可以用它配合系统工具完成。关键在于:路径由你写的命令决定,不是 Composer 配置出来的。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 只打源码(不含
vendor):git archive --format=zip --output=dist/app-1.0.0.zip HEAD,输出路径就是--output=后面的值 - 打完整可部署包(含优化后的
vendor):composer install --no-dev --optimize-autoloader && zip -r dist/deploy.zip . -x "tests/*" ".git/*" "node_modules/*",dist/就是你的自定义输出目录 - 想统一管理?把命令写进
composer.json的scripts:"scripts": {"build:zip": "composer install --no-dev --optimize-autoloader && zip -r dist/app.zip . -x 'vendor/composer/*'"},然后运行composer run build:zip
为什么不能靠 installer-paths 或 config.vendor-dir 实现打包路径控制
这两个配置只影响安装时的目录结构,和“打包成一个 zip 文件”毫无关系:
-
config.vendor-dir改的是vendor/目录名或位置,不影响最终归档文件存在哪 -
installer-paths控制某些特定type的包装到哪(如 WordPress 插件进wp-content/plugins/),但它不生成压缩包,也不决定归档路径 - 打包过程完全绕过 Composer 的 installer 机制,你用
zip命令时,Composer 甚至不知道你在打包
最易被忽略的一点:无论你用什么命令打包,composer.lock 必须包含在归档内,否则目标环境无法复现依赖。而 git archive 默认不包含它,得手动加回或改用 cp + zip 流程。










