Composer 本身不处理关键帧——它只是 PHP 依赖管理工具,不解析 FBX/USD、不操作时间轴;所谓“关键帧清理”实为混淆了 Cascadeur、AE 等动画软件术语,PHP 项目中涉及的关键帧数据(如 FBX、PNG 帧、JSON 动画)需独立备份,与 composer install/update 无关。

Composer 本身不处理关键帧——它压根不是动画软件,也不解析 FBX/USD 或操作时间轴。你看到的“关键帧清理”大概率是把 Cascadeur、After Effects 或动捕流程里的术语和 Composer 混用了。
如果你真在用 Composer 管理 PHP 项目,并且正在做动画相关开发(比如调用 PHP-FFMpeg 处理视频帧、或集成 Cascadeur 导出的动画数据),那“清理关键帧”实际对应的是代码层的数据预处理、缓存刷新或依赖重装动作——和动画软件里的“清理”完全不是一回事。
为什么 Composer install/update 不需要“关键帧备份”
Composer 的核心职责是管理 vendor/ 目录下的依赖包及其版本锁定(composer.lock)。它不会修改你的源码、不会触碰资源文件夹里的动画帧序列、也不会影响任何 .fbx/.usd 文件内容。
- 执行
composer install只会根据composer.lock还原已知状态,不产生不可逆变更 - 执行
composer update会升级依赖,但所有变更都记录在composer.lock中,可随时git checkout回退 - 真正危险的操作是手动删
vendor/后乱跑composer install,或没提交composer.lock就推到 CI
哪些场景才真要“备份关键帧”
如果你实际在做动画数据落地,比如:
- 用
Cascadeur导出带关键帧的 FBX,再由 PHP 后端解析并入库 → 备份的是 FBX 文件本身,不是composer.json - 用
PHP-FFMpeg提取视频中某几帧做关键帧标记 → 备份的是输出目录里的frame_001.png等文件 - 把
After Effects表达式生成的运动数据导出为 JSON,供前端播放 → 备份的是那个 JSON 文件,不是依赖包
这些操作和 Composer 无关,但容易被误认为“Composer 清理导致关键帧丢失”——其实是脚本逻辑清空了输出目录,或者没加 --no-scripts 导致 post-install-cmd 自动触发了清理命令。
Composer 层面真正的安全防护点
针对 PHP 动画服务类项目,以下配置比“备份关键帧”更关键:
- 始终提交
composer.lock,禁用生产环境的composer update - 在
composer.json中用"minimum-stability": "stable"避免意外拉取 dev 分支 - 若项目调用
exec("ffmpeg ...")或解析二进制动画文件,确保open_basedir限制写入路径,防止覆盖原始关键帧资源 - 对涉及文件操作的自定义 Composer 脚本(如
post-autoload-dump),加日志和 dry-run 开关,别直接unlink()帧序列目录
关键帧不会因为 composer install 消失,但如果你的部署脚本把它和 vendor/ 一起 rm -rf 了,那备份就不是选修课,是必修课——只是备份对象从来不是 Composer 管理的东西。











