0

0

composer如何配置自定义命令_composer scripts别名设置【实操】

裘德小鎮的故事

裘德小鎮的故事

发布时间:2026-02-14 14:48:03

|

689人浏览过

|

来源于php中文网

原创

在 composer.json 的 "scripts" 中直接定义键值对即可创建命令别名,键为别名(区分大小写、避免特殊字符),值为字符串或数组形式的命令;支持 {$argv} 透传参数(仅限字符串值);可被钩子通过 @ 引用,但不支持传参;跨平台建议优先使用 php 脚本。

composer如何配置自定义命令_composer scripts别名设置【实操】

composer scripts 里怎么写命令别名

直接在 composer.json"scripts" 字段里加键值对,键就是你敲的别名,值是实际要执行的命令(字符串或数组)。别名不是额外插件,也不用注册——只要写进去,composer run-script xxx 或更短的 composer xxx 就能触发。

常见错误现象:composer mytask 报错 “Script not found”,大概率是没把脚本名写进 "scripts" 对象顶层,或者手误加了多余缩进、逗号位置错导致 JSON 解析失败。

  • 别名必须是合法的 JSON 键名,避免空格、斜杠、点号;推荐用短横线(build-dev)或下划线(test_unit
  • 值可以是字符串(如 "phpunit --testsuite unit"),也可以是数组(支持多条命令顺序执行)
  • 如果命令含空格或特殊字符,不用额外转义——JSON 字符串本身已处理,但引号得配对
  • 别名不区分大小写?不。Composer 区分大小写,Testtest 是两个不同脚本

如何让自定义命令支持参数传递

默认情况下,composer xxx arg1 arg2 中的 arg1 arg2 不会自动透传给脚本命令。必须显式用 {$argv} 占位符,且只在值为字符串时生效(数组形式不支持参数透传)。

使用场景:写一个通用清理命令,想指定删哪个目录;或跑测试时动态传测试组名。

道影AI
道影AI

专业的AI短剧生成解决方案,从资产创建到视频生成,一站式智能化内容生产。

下载
  • 正确写法:"clean": "rm -rf {$argv}",然后运行 composer clean var/cache
  • 错误写法:"clean": ["rm -rf", "{$argv}"] —— 数组不解析占位符,{$argv} 会被当字面量执行
  • {$argv} 是 Composer 内置变量,不是 shell 变量,不能写成 $1${1}
  • 如果脚本值是数组,又想传参,只能改用包装脚本(比如调用 php clean.php {$argv},再由 PHP 解析)

script 执行时机与事件钩子冲突怎么办

如果你在 "scripts" 里既写了独立别名(如 "cs-fix"),又配置了事件钩子(如 "post-install-cmd"),它们互不干扰——除非你手动在钩子里调用了那个别名。

容易踩的坑:以为 composer install 会自动运行你写的 "cs-fix",结果什么都没发生。它不会,除非你把它加进 "post-install-cmd" 数组里。

  • 钩子字段名是固定关键词(pre-autoload-dump, post-update-cmd 等),别名是任意自定义键,二者不在同一命名空间
  • 别名可被钩子调用,例如:"post-update-cmd": ["@cs-fix", "@test"] —— 注意前面加 @ 表示引用其他 script
  • @ 引用时,不支持传参(@cs-fix --dry-run 无效),参数只能走原始调用路径
  • 钩子执行失败,默认中断后续流程;而手动运行别名失败,只报错退出,不影响其他命令

Windows 下 script 命令执行失败的典型原因

最常卡在路径分隔符和 shell 差异上:Composer 在 Windows 默认调用 cmd.exe,不识别单引号、$()、反引号,也不原生支持 rm -rf 这类 Unix 命令。

性能/兼容性影响:强行用 bash -c "rm -rf ..." 虽然可行,但会多启一个进程,且依赖 Git for Windows 或 WSL 安装,CI 环境容易挂。

  • 跨平台安全写法优先用 PHP 脚本,例如 "clean": "php ./scripts/clean.php"
  • 必须用 shell 命令时,Windows 用户建议统一用 del /q /s + rmdir 组合,而不是硬塞 rm
  • 别在 script 里写 export FOO=bar && php script.php —— cmd.exe 不支持 export,也不会连贯执行
  • 检查 composer config --list | findstr bin-dir 确认 bin 路径是否含空格,有则需用双引号包裹调用路径("php \"vendor/bin/phpunit\""
事情说清了就结束。真正麻烦的不是写几行 script,而是团队里有人改了 composer.json 却忘了同步文档,或者在 CI 里用 macOS 本地调试过的命令,扔到 Windows runner 上就哑火——这些地方没日志、不报具体错误,得靠人盯。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

159

2023.12.25

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

436

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

544

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

317

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

81

2025.09.10

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

531

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

214

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1552

2023.10.24

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

23

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十四期_PHP8编程
第二十四期_PHP8编程

共86课时 | 3.4万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.5万人学习

第二十三期_PHP编程
第二十三期_PHP编程

共93课时 | 7.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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