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


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 后触发

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

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

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

Shell脚本编写基础 中文WORD版 Shell脚本编写基础 中文WORD版

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

Shell脚本编写基础 中文WORD版 24 查看详情 Shell脚本编写基础 中文WORD版
  • 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中文网其它相关文章!


# 如何在  # 宿迁网站推广选择哪个好  # 网站建设需要哪种人才  # 杭州seo网站优化排名公司  # 廉江网站优化  # seo闲鱼  # 辽宁拼多多网站建设好处  # 做百度seo技巧  # 深圳抖音搜索seo厂家  # 网站 优化推广 方式  # 安庆长江大桥网站建设  # 又是  # 程序设计语言  # 是一个  # 复用  # php  # 键值  # 回调  # 如何使用  # 如何解决  # 自定义  # php脚本  # 键值对  # 常见问题  # win  # 环境变量  # windows  # composer  # json  # js 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 哈尔滨城市通昵称修改方法  使用Python和GBGB API高效抓取指定日期范围和赛道比赛结果教程  J*aScript字符串_Unicode处理  C++二维数组动态分配方法_C++指针与数组内存布局  顺丰速运官网查询入口 顺丰物流查询官网入口链接  WPS文字如何进行简繁转换  淘口令快速解析技巧  Vue 3中独立响应式实例的创建与应用  mysql数据库索引类型有哪些_mysql索引类型解析  《洛克王国:世界》国家队搭配攻略  Win10关闭UAC用户账户控制的方法 Win10降低安全提示等级【技巧】  火柴人战争网页版在线玩  教育查询官方网站入口 教育个人档案查询免费官网  Python模块化编程:避免循环导入与共享函数的最佳实践  如何在mysql中使用索引提示_mysql索引提示优化方法  《桃源记2》资源采集攻略  获取WooCommerce产品在后台编辑页面的分类ID  sublime如何撤销关闭的标签页_sublime重新打开已关闭文件技巧  如何快速去除厨房重油污? 2025年最好用的厨房清洁剂推荐  使用Google服务账号实现Google Drive API无缝集成与文件访问  抖音评论无法发送如何修复 抖音评论功能操作指南  PSD转AI文件的简单方法  如何测试您的网站全球打开速度-网站海外测速工  word邮件合并怎么插入个性化图片_Word邮件合并插入个性化图片方法  处理含命名空间的XML文件 Power Query中的高级技巧  《红果免费短剧》下载观看方法  《理想汽车》权限管理设置方法  B站怎么快速升级 B站用户等级提升攻略【详解】  怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】  《图怪兽》退出登录方法  漫蛙manwa官网浏览入口_漫蛙漫画网页版访问链接  如何在CSS中设置背景图像:一个全面指南  《真我》申请退款方法  漫蛙漫画官方网站使用_漫蛙manwa网页版在线入口教程  《米姆米姆哈》米姆获取及技能攻略  铁路12306官网入口 铁路12306中国铁路官网登录首页  奥克斯空调不制热啥毛病_奥克斯空调不制热原因分析及解决技巧  win11讲述人怎么关闭 Win11屏幕朗读辅助功能禁用方法【技巧】  使用TinyButStrong生成HTML并结合Dompdf创建PDF教程  sublime怎么快速在浏览器中预览HTML_sublime配置View in Browser教程  《虎扑》取消评分记录方法  CSS绝对定位与溢出控制:实现背景元素局部显示不触发滚动条  手机自动关机是怎么回事?如何修复?手机异常关机的原因排查与修复技巧  实时数据流中高效查找最小值与最大值  vivo浏览器怎么离线保存网页 vivo浏览器下载完整页面以便无网络时阅读  抖音号显示企业机构号是什么意思?企业机构号申请条件是什么?  优化2xN网格最大路径和的动态规划算法实践  跨语言测试实践:使用Python Selenium测试现有J*a Web项目  《优志愿》修改手机号方法  《密马》发布账号方法 

 2025-12-08

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.