如何在 composer.json 的 scripts 中定义并执行自定义命令?

4次阅读

composer脚本是将shell命令、php脚本或Composer命令封装为可复用别名,通过composer run-script或简写composer xxx触发;支持数组顺序执行、内置别名引用、事件钩子自动执行及跨平台php脚本替代。

如何在 composer.json 的 scripts 中定义并执行自定义命令?

composer.jsonscripts 段中定义自定义命令,本质是把 shell 命令、PHP 脚本或 Composer 命令封装成可复用的别名,通过 composer run-script xxx 或简写 composer xxx 触发。

在 scripts 中定义命令

composer.json"scripts" 对象里添加键值对,键是命令名(如 "test"),值是待执行的命令字符串或数组:

  • 单条命令直接写字符串:"test": "phpunit"
  • 多条命令用数组顺序执行(默认 shell 模式):"test": ["@clear-cache", "phpunit --colors=always"]
  • 支持 Composer 内置命令别名,如 @dev@prod,也可引用其他自定义脚本:"clear-cache": "rm -rf var/cache/*"
  • 若需跨平台兼容,推荐用 PHP 脚本代替 shell 命令(比如 windows 不认 rm

支持事件钩子的自动执行

Composer 脚本不仅可手动运行,还能绑定到生命周期事件,例如:

  • "post-install-cmd":运行 composer install 后触发
  • "pre-autoload-dump":生成自动加载文件前执行
  • "post-update-cmd":运行 composer update 后触发

这些钩子会自动执行,无需手动调用;多个脚本可用数组定义,顺序执行。

执行自定义脚本的几种方式

定义好后,有三种常用执行方式:

如何在 composer.json 的 scripts 中定义并执行自定义命令?

Shell脚本编写基础 中文WORD版

Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统

如何在 composer.json 的 scripts 中定义并执行自定义命令? 24

查看详情 如何在 composer.json 的 scripts 中定义并执行自定义命令?

  • composer run-script test —— 显式调用,最清晰
  • composer test —— 简写形式(Composer 2.2+ 支持,要求脚本名不含连字符或特殊字符)
  • composer run-script test --no-ansi --verbose —— 加参数控制输出行为

注意:如果脚本名和 Composer 原生命令冲突(比如叫 "install"),必须用完整 run-script 形式,否则会执行原生命令。

调试与常见问题

脚本出错时,Composer 默认只显示返回码。开启调试更方便定位问题:

  • --verbose 查看完整命令和输出
  • --no-interaction 避免交互式命令卡住 CI 流程
  • windows 用户慎用 rmmkdir -pbash 特有命令,改用 php -r "exec('rd /s /q cache');" 或专用 PHP 脚本
  • 环境变量可用 $COMPOSER_HOME$PWD 等,但不要依赖未声明的自定义变量(不会自动注入)

基本上就这些。脚本能力不复杂但容易忽略细节,合理利用能显著简化日常开发和部署流程。

以上就是如何在 composer.json 的 scripts 中定义并执行自定义命令?的详细内容,更多请关注php中文网其它相关文章!

text=ZqhQzanResources