composer如何查看脚本事件列表_composer run-script –list【事件】

2次阅读

composer run-script –list 只显示 composer.json 中 scripts 字段显式定义的脚本名,不显示未绑定的内置事件;需用 composer show –events 查看全部生命周期事件。

composer如何查看脚本事件列表_composer run-script –list【事件】

composer run-script –list 显示不了事件?先确认是否在项目根目录

执行 composer run-script --list 时空白或报错,大概率是因为当前不在含 composer.json 的项目根目录。Composer 脚本是项目级配置,不支持全局扫描。

  • ls composer.jsondir composer.json 确认文件存在
  • 如果在子目录(如 src/),cd .. 回到上层再试
  • windows 下注意路径大小写不影响,但 PowerShell 有时会缓存旧路径,建议新开终端

为什么 –list 不显示自定义脚本?检查 composer.json 的 scripts 字段

composer run-script --list 只列出 composer.jsonscripts 对象下定义的键名,不会自动发现函数、命令或 vendor 里的钩子。

  • 确保 composer.json 里有类似这样的结构:
    "scripts": {   "dev-start": "php -S localhost:8000 -t public",   "test": "vendor/bin/phpunit" }
  • 键名(如 dev-start)才是事件名,值只是执行命令,不参与列表展示
  • 如果 scripts 是空对象 {} 或根本不存在该字段,--list 就只显示内置事件(如 post-install-cmd)——但前提是没被禁用

内置事件(如 post-autoload-dump)为什么没出现在 –list 输出里?

composer run-script --list 默认只显示「显式定义」的脚本,不主动枚举 Composer 内置生命周期事件,除非你在 scripts 里手动绑定了它们。

  • 想触发 post-autoload-dump,得先在 composer.json 里写:
    "scripts": {   "post-autoload-dump": "echo 'Autoload updated'" }
  • 否则它只是后台默默运行的钩子,不会出现在 --list 结果中
  • 完整内置事件列表见 Composer 官方文档,但记住:没绑定 = 不可见 = 不能用 run-script 直接调

想快速查所有可用事件名,用 composer show –events

composer run-script --list 功能有限,真正想看“哪些事件能被监听”,应该用更直接的命令:

  • composer show --events 会列出全部内置事件(包括 pre-install-cmdpost-update-cmd 等),按阶段分组,清晰明确
  • 这个命令不要求项目有 scripts,也不依赖当前目录是否有 composer.json(只要已安装 Composer)
  • 注意:它不显示你自定义的脚本名,只管生命周期事件;而 run-script --list 正好相反

两个命令互补,不是替代关系。搞混这点,就容易以为“没事件”或者“脚本失效”。

text=ZqhQzanResources