Composer exec命令怎么用 在vendor目录下执行命令【技巧】
发布时间 - 2026-01-29 00:00:00 点击率:次composer exec 不是 Composer 原生命令,而是由第三方插件提供;官方不支持该命令,正确方式是使用 composer run-script 封装或直接调用 vendor/bin/xxx。
直接用 composer exec 无法在 vendor 目录下执行命令——它根本不是 Composer 原生命令,而是由 composer-execa 或 composer-bin 这类第三
为什么 composer exec 不是原生命令
Composer 官方核心命令列表里没有 exec。你运行 composer exec --help 报错或提示“Command 'exec' is not defined”,说明你本地没装对应插件。常见混淆来源是某些团队文档或 CI 脚本里默认预装了 phpstan/phpstan、dealerdirect/phpcodesniffer-composer-installer 等依赖,它们可能自带封装逻辑,但并非 Composer 自带能力。
真正能跨项目统一执行工具的,是以下两种可靠方式:
- 用
composer run-script配合scripts定义(推荐) - 用
vendor/bin/xxx显式调用(最直白)
正确做法:用 composer run-script 封装命令
在 composer.json 的 scripts 段里定义别名,让 Composer 自动切换到项目根目录(即 vendor 所在位置)再执行:
{
"scripts": {
"phpcs": "php vendor/squizlabs/php_codesniffer/bin/phpcs",
"phpunit": "php vendor/phpunit/phpunit/phpunit"
}
}
然后运行:
composer run-script phpcs -- --standard=PSR12 src/
注意点:
-
--之后的参数会透传给实际命令,不能漏掉 - 路径如
src/是相对于项目根目录的,不是相对于vendor/bin - 所有命令都在项目根目录下执行,天然满足“在
vendor目录下可用”的前提
更简单粗暴:直接调用 vendor/bin/xxx
只要工具支持安装到 vendor/bin/(绝大多数 Composer 包都支持),就不用绕路:
vendor/bin/phpcs --standard=PSR12 src/
vendor/bin/phpunit --testdox
关键细节:
- 确保
vendor/bin在你的$PATH中(开发机建议加进 shell 配置),否则要写全路径 - 某些包不自动注册二进制文件(比如只提供
autoload类库),此时得查文档看是否含 CLI 入口,或改用php vendor/xxx/yyy.php形式 - Windows 下用
vendor\\bin\\phpcs或直接php vendor/bin/phpcs(因 .bat 封装可能失效)
插件方案(仅当团队强依赖时考虑)
如果真需要类似 composer exec phpstan 的语法,可装 roave/composer-dev-bundle 或 consolidation/cgr,但要注意:
- 引入额外维护成本,CI 镜像需同步安装插件
- 不同插件对参数解析行为不一致(比如有的吃掉第一个
--,有的不) -
composer exec插件通常仍会把工作目录设为项目根,不是vendor子目录本身——你并不需要进入vendor/xxx才能运行其命令
真正需要“在 vendor 子目录中执行”的场景极少,多数是误读了错误信息里的路径提示,或者想调试某个包的内部脚本——这时候应该 cd vendor/xxx && php bin/test.php,而不是靠 composer exec 替代。
# php
# js
# json
# composer
# windows
# 工具
# win
# yy
# 为什么
# 封装
# 是由
# 自带
# 相对于
# 直接调用
# 文档
# 目录下
# 都在
# 第一个
# 两种
# 设为
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
如何快速打造个性化非模板自助建站?
使用C语言编写圣诞表白程序
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
如何在阿里云ECS服务器部署织梦CMS网站?
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
如何确保FTP站点访问权限与数据传输安全?
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
js实现点击每个li节点,都弹出其文本值及修改
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
如何在IIS中配置站点IP、端口及主机头?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在IIS中新建站点并解决端口绑定冲突?
魔方云NAT建站如何实现端口转发?
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
深入理解Android中的xmlns:tools属性
Python文件操作最佳实践_稳定性说明【指导】
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Laravel如何处理文件下载请求?(Response示例)
iOS正则表达式验证手机号、邮箱、身份证号等
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
成都网站制作公司哪家好,四川省职工服务网是做什么用?
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
佛山网站制作系统,佛山企业变更地址网上办理步骤?
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
使用豆包 AI 辅助进行简单网页 HTML 结构设计
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
轻松掌握MySQL函数中的last_insert_id()
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
海南网站制作公司有哪些,海口网是哪家的?
网站制作价目表怎么做,珍爱网婚介费用多少?
原生JS实现图片轮播切换效果
深圳网站制作平台,深圳市做网站好的公司有哪些?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
网站制作报价单模板图片,小松挖机官方网站报价?
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
如何在IIS管理器中快速创建并配置网站?

