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

穿越時空
发布: 2025-12-08 03:39:27
原创
559人浏览过
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 后触发

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

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

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

视野自助系统小型企业版2.0 Build 20050310
视野自助系统小型企业版2.0 Build 20050310

自定义设置的程度更高可以满足大部分中小型企业的建站需求,同时修正了上一版中发现的BUG,优化了核心的代码占用的服务器资源更少,执行速度比上一版更快 主要的特色功能如下: 1)特色的菜单设置功能,菜单设置分为顶部菜单和底部菜单,每一项都可以进行更名、选择是否隐 藏,排序等。 2)增加企业基本信息设置功能,输入的企业信息可以在网页底部的醒目位置看到。 3)增加了在线编辑功能,输入产品信息,企业介绍等栏

视野自助系统小型企业版2.0 Build 20050310 0
查看详情 视野自助系统小型企业版2.0 Build 20050310
  • 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 -p 等 bash 特有命令,改用 php -r "exec('rd /s /q cache');" 或专用 PHP 脚本
  • 环境变量可用 $COMPOSER_HOME$PWD 等,但不要依赖未声明的自定义变量(不会自动注入)

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

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

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号