讲师中心 微信公众号
AI工具推荐 视频效率加速

Composer怎么运行自定义脚本_Composer scripts配置与使用【开发】

陌辰大大_6829

陌辰大大_6829

发布时间:2026-02-05 14:11:48

|

475人浏览过

|

来源于php中文网

原创

Composer 自定义脚本需在 composer.json 的 scripts 对象中定义键值对,键为脚本名(如 dev:clear-cache),值为命令字符串或数组,支持 PHP 方法调用、shell 命令及 Composer 命令,多条命令建议用数组确保顺序,@开头的命令由 Composer 自动解析路径。

composer怎么运行自定义脚本_composer scripts配置与使用【开发】

Composer 运行自定义脚本,本质是通过 scripts 字段在 composer.json 中声明命令,再用 composer run 或别名触发 —— 不需要写 shell wrapper,也不依赖外部 Makefile。

怎么在 composer.json 里定义一个可运行的脚本

在 composer.json 的 scripts 对象中添加键值对,key 是脚本名(如 post-install-cmd 或自定义名 dev:clear-cache),value 是要执行的命令字符串或数组。支持 PHP 函数调用、shell 命令、其他 Composer 命令。

示例:

"scripts": {
  "dev:clear-cache": "php artisan cache:clear",
  "test:unit": ["@php vendor/bin/phpunit --testsuite=unit"],
  "pre-deploy": [
    "@composer install --no-dev --optimize-autoloader",
    "php -r "file_put_contents('VERSION', trim(`git rev-parse HEAD`));""
  ]
}
  • 单条命令可写字符串,多条建议用数组,保证执行顺序
  • 以 @ 开头的命令(如 @composer、@php)会被 Composer 自动解析为当前项目环境下的可执行路径,避免硬编码 ./vendor/bin/composer
  • PHP 函数调用需写成 MyClass::myMethod 形式,且类必须已加载(通常靠自动加载或 autoload-dev)

运行脚本时为什么提示 “Script not found” 或直接静默退出

常见原因不是拼写错误,而是脚本名未被识别或未满足触发条件:

windows-shell
windows-shell

Windows 命令行编码与兼容规范。涵盖 GBK/UTF-8 编码、PowerShell/pwsh 互操作、Python/Node.js、Git 配置及代码生成规则。适用于 Windows 10/11 + MSYS2/Git Bash 环境下的所有命令行操作。

下载
  • 手动运行要用 composer run <script-name></script-name>(Composer 2.2+),旧版本用 composer run-script <script-name></script-name>
  • 如果脚本名和 Composer 内置事件名一致(如 post-install-cmd),它只在对应生命周期自动触发,composer run 不会默认找它 —— 必须显式声明为普通脚本名或加 --dev 参数(视配置而定)
  • 脚本定义在 require-dev 包的 composer.json 里?不会被主项目读取,必须放在根 composer.json
  • 使用了 symfony/console 类命令但没加 --no-ansi,某些 CI 环境下会因颜色控制符报错退出

PHP 回调函数怎么写才不会报 Class 'xxx' not found

Composer 执行 PHP 回调时,不会自动包含 vendor/autoload.php,除非你显式 require 或用 Composer 提供的自动加载机制。

  • 推荐写法:"scripts": {"check:env": "App\Scripts\CheckEnv::run"},并在 autoload-dev 中注册该命名空间
  • 不推荐写法:"scripts": {"check:env": "require 'scripts/check.php'; check_env();"} —— 路径易错,且无法利用 Composer 的 autoloader
  • 调试技巧:在回调方法开头加 var_dump(get_included_files()); die;,确认 vendor/autoload.php 是否已加载
  • 如果回调依赖 Laravel 或 Symfony 容器,需先 boot 应用,不能直接调用 service —— 否则容器未初始化,app() 或 $container->get() 会失败

脚本里执行 shell 命令要注意哪些兼容性问题

跨平台(Linux/macOS/Windows)脚本最容易翻车的地方不在语法,而在路径分隔符、换行符、内置命令可用性:

  • rm -rf var/cache/* 在 Windows 的 Git Bash 可能工作,但在原生 CMD 或 PowerShell 会失败 —— 改用 php -r "array_map('unlink', glob('var/cache/*'));" 更稳
  • 路径拼接别用 / 硬写,用 dirname(__DIR__) . DIRECTORY_SEPARATOR . 'var' 或 __DIR__ . '/../../var'(PHP 8.1+ 支持 str_ends_with() 判断后缀,但路径构造仍建议用常量)
  • composer run 默认继承父 shell 环境变量,但某些 CI(如 GitHub Actions)默认不加载 .bashrc,导致 php 或 node 命令找不到 —— 建议在脚本里用 which php 或 command -v php 检查,或直接写绝对路径(如 /usr/bin/php)

真正麻烦的不是“怎么写”,而是“在哪执行”——脚本总是在 Composer 当前工作目录(即 composer.json 所在目录)下运行,cd 切换后若没重置,后续命令可能路径错乱。这点很容易被忽略。

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
PHP Symfony框架
PHP Symfony框架

本专题专注于PHP主流框架Symfony的学习与应用,系统讲解路由与控制器、依赖注入、ORM数据操作、模板引擎、表单与验证、安全认证及API开发等核心内容。通过企业管理系统、内容管理平台与电商后台等实战案例,帮助学员全面掌握Symfony在企业级应用开发中的实践技能。

5777

2025.09.11

laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

857

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

855

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2508

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4421

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

6410

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

4236

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

7929

2025.08.05

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

60

2026.10.22

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn