composer archive命令根本不存在,运行必报“command 'archive' is not defined”;它从未被官方实现,所有相关教程均混淆了git archive、第三方插件或自定义脚本。

composer archive 命令根本不存在
运行 composer archive 会直接报错:Command "archive" is not defined。Composer 官方从没实现过这个子命令,所有文档或教程里提到的 composer archive 都是误传——可能是把 git archive、第三方插件(如 hirak/php-archive)或自定义脚本混为一谈。你查 composer help 或官方文档(getcomposer.org),都找不到该命令。
想打“可离线部署包”,必须先装依赖再打包整个目录
真正能跑起来的离线包,核心是:vendor 目录 + autoload.php + composer.lock 必须齐全,且不能含 dev 依赖。靠 composer archive 不可能做到,因为它压根不碰 vendor/。
- 在有网环境执行:
composer install --no-dev --optimize-autoloader - 确认
vendor/autoload.php存在且vendor/composer/autoload_classmap.php已生成(--optimize-autoloader触发) - 用系统命令打包:
tar -czf myapp-release.tar.gz . -X exclude-list.txt,其中exclude-list.txt可写node_modules/、.git/、tests/等非运行必需项 - 务必保留
composer.json和composer.lock—— 后者是离线重装时版本一致的唯一依据
archive-includes 只适用于源码发布,不是部署方案
如果你在 composer.json 里写了 "extra": {"archive-includes": ["config/**/*"]},那只是让 composer archive(如果存在)多打包几个配置文件——但现实中它不会运行,而且就算能运行,打出来的 zip 里依然没有 vendor/、没有 autoload.php,解压后 require 'vendor/autoload.php' 必然失败。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 这种配置只对「作为 Composer 包发布给他人
require」有意义(比如你写了个 SDK,要上传到 Packagist) -
archive-includes是白名单,不是补丁;它不改变vendor/缺失的事实 - 离线部署时若误用此方式,会卡在
Class not found,因为自动加载器根本没被生成或包含
别信“一键 archive 就能部署”的说法
所有声称 composer archive --format=zip --no-dev 能产出可运行包的说法,都忽略了最关键的一点:Composer 的设计哲学是“依赖即服务”,它不负责固化二进制。vendor 目录不是静态资产,而是安装过程的产物——含脚本执行、符号链接、平台相关扩展编译等动态行为。
跨机器直接拷贝 vendor 很容易出问题:软链失效、.so 文件权限丢失、post-install-cmd 脚本未执行。真要稳妥离线,要么用 composer install --no-install --prefer-dist 提前下载全部 dist zip 并连带 packages.json 一起打包,要么接受用系统命令打包完整运行态目录这一事实。后者更直白,也更可控。










