composer不是动画工具,不支持动画脚本或批量制作动画;它只是php依赖管理器,scripts仅触发生命周期钩子,与帧、时间轴、图层运动无关。

Composer 没有动画脚本,也不存在“提高批量制作动画效率”这回事——你正试图用螺丝刀拧螺丝,但手里的其实是锤子。
Composer scripts 不是动画脚本,而是 PHP 项目生命周期钩子
你在 composer.json 里写的 "scripts",比如 "post-install-cmd" 或 "pre-autoload-dump",只会在执行 composer install、composer update 等命令时触发。它们能跑 PHP 函数、shell 命令、甚至调用 @php 或 @composer,但和动画帧、时间轴、图层运动完全无关。
常见误用现象:
- 把 After Effects 的 JSX 脚本文件丢进
vendor/目录,指望composer install自动加载并运行它 → 不会,Composer 不解析 JS - 在
scripts里写"render": "ae_render.sh",但没确保该 shell 脚本存在、可执行、且环境变量完整 → 执行失败且无提示 - 以为
@composer dump-autoload能刷新 AE 表达式或更新预览 → 它只管 PHP 类自动加载,不管任何 UI 渲染
所谓“批量制作动画”,真正该动的是 AE 或服务端逻辑
如果你真在做批量动画生成(比如根据 JSON 配置导出 100 个 MP4),那核心链路是:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 用
aerender命令行工具(AE 自带)驱动渲染,不是 Composer - 用 Node.js / Python 写一个轻量服务,接收参数、拼接 AE 脚本、调
aerender -project xxx.aep -comp "Main" -output xxx.mp4 - 这个服务可以叫
animation-composer,但它和 Adobe Composer 或 PHP Composer 都无关系
示例中容易被忽略的硬性条件:
-
aerender必须与 AE 安装路径对齐;macOS 上常因权限或沙盒报错Could not launch After Effects - AE 合成名、输出模板名(如
"YouTube 1080p")必须完全一致,否则applyTemplate()静默失败 - JSX 脚本中若用
app.project.items[1]取合成,项目一换序号就错——应改用app.project.items.byName("Main")
@composer 别名只解决命令调用一致性,不解决跨工具协作
在 scripts 中写 "fix-deps": "@composer update --no-dev",作用只是确保调用的是当前项目所用的 Composer 实例,而非系统 PATH 里可能存在的旧版。它不会让 AE 脚本跑得更快,也不会自动帮你生成关键帧。
真正影响批量效率的关键点反而是:
- CI 流水线中是否缓存了
~/.composer/cache和node_modules(如果 AE 脚本依赖前端构建) - 是否用
--no-dev --optimize-autoloader --classmap-authoritative缩短 PHP 初始化耗时(仅当你的动画服务是 PHP 写的) - 是否在 AE 脚本里滥用
app.refreshPreview()—— 每次调用都会强制重绘,批量导出时应禁用
别在 composer.json 里找 timeline、easing、duration 字段。这些字段不存在,也不会被解析。动画逻辑永远在 AE 里、在 JS 里、在 FFmpeg 参数里,或者在你自建的服务接口定义里——Composer 只负责把 PHP 依赖装好,仅此而已。










