Composer 无法清理关键帧,因其仅为 PHP 依赖管理工具,不解析动画文件、不介入时间轴系统,也无关键帧相关 API 或文件处理能力。

Composer 本身不处理关键帧(keyframe)、动画或时间轴数据——它是一个 PHP 依赖管理工具,和 AE、Blender 或 Unity 等动画软件里的“关键帧清理”完全无关。如果你在搜索“Composer 清理关键帧”,大概率是混淆了工具边界。
为什么 composer 命令无法操作关键帧
Composer 的职责仅限于:composer.json 解析、包下载、自动加载生成、脚本执行等。它不读取、解析或修改任何二进制动画文件(如 .fbx、.blend)、JSON 动画导出(如 spine.json)、CSS @keyframes 规则,也不介入前端动画库(如 GSAP、Framer Motion)的运行时状态。
- 你看到的“孤立关键帧”属于 DCC 工具(如 Maya、AE)或游戏引擎(Unity、Unreal)的时间轴系统
-
composer install或composer dump-autoload对这些数据零影响 - 试图用 Composer 脚本去“扫描并删掉未绑定的关键帧”——既无对应 API,也无文件解析能力
你实际需要的可能是这些工具或方法
根据你使用的环境,对应方案完全不同:
- 如果是 Unity:用
AnimationClip+EditorCurveBinding遍历所有曲线,比对AnimationUtility.GetKeyCount和实际绑定路径,再调用AnimationUtility.SetKeys过滤 - 如果是 Blender Python 脚本:遍历
bpy.data.actions,检查每个fcurve.data_path是否仍指向有效属性,用fcurve.clear()或重建FCurve - 如果是 CSS 动画:没有“孤立关键帧”概念;但若想删除未被
animation-name引用的@keyframes,需用 PostCSS 插件(如postcss-unused-keyframes)静态分析 - 如果是 Spine 或 DragonBones 导出的 JSON:需写脚本解析
animations数组中的轨道,对比slots/skins是否还存在对应插槽/皮肤引用
一个常见误操作:把 Composer 脚本当通用自动化胶水
有人会尝试在 composer.json 的 scripts 里写:"clean-keyframes": "php clean_keys.php",以为这样就能“集成进构建流程”。问题在于:
-
clean_keys.php必须自己实现完整解析逻辑(比如用json_decode读 Spine JSON,再做引用计数),Composer 只负责调用它,不提供任何动画语义支持 - 如果该脚本依赖 Blender/Unity 的 Python/C# 运行时环境,
composer run会直接报command not found - 参数传递受限:Composer 不支持向脚本传入复杂结构体,像 “只清理
Armature.Rotation下未绑定的第 3~7 帧” 这类条件,得靠脚本内部硬编码或额外配置文件
真正要清理孤立关键帧,得先确认数据格式和宿主环境,再选对应解析器——Composer 在这条链路上,连第一个环节都接触不到。











