直接修改 composer.json 不生效,必须配合对应命令:改 autoload 需 composer dump-autoload,改 require 需 composer install/update,改元数据需确保 json 合法且字段位置正确。

直接改 composer.json 文件本身不生效,必须配合对应命令触发解析、安装或重生成逻辑;手写容易错格式、错字段位置、漏联动操作,多数“改了没用”问题其实卡在没跑 composer install、composer dump-autoload 或校验失败。
改了 description 或 author 为什么 composer show 没变
这两个字段纯属元数据,不参与依赖解析或自动加载,改完只需保存文件即可被 composer show 读取——但前提是改对位置、JSON 合法、且你查的是当前工作目录下的文件。
-
description必须在顶层,不能塞进require或config里;写成"description": "xxx",不是"desc": "xxx" -
author必须是数组,哪怕只填一个人也要写成[{"name": "张三"}],写成对象{"name": "张三"}会导致composer validate报错 - 改完没生效?先运行
composer validate确认 JSON 合法;再用composer show your-vendor/your-name(注意 vendor/name 要和name字段一致)验证 - Packagist 页面还是旧的?它读的是你 git push 的 commit,不是本地文件。运行
git show HEAD:composer.json | grep -A 3 author确认线上版本是否真含新内容
autoload 配了却报 Class not found
PSR-4 映射失效是最常见原因,问题几乎全出在路径或命名空间与实际文件结构不匹配,Composer 不会主动报错,只静默跳过。
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
-
"psr-4": {"App\": "src/"}要求:文件src/Http/Controller.php中必须声明namespace AppHttp;(结尾带反斜杠),不能是namespace App\Http;或namespace AppHttp - 路径
"src/"必须真实存在,且末尾必须有斜杠;写成"src"或"./src/"都会导致类文件路径拼错 - 改完
autoload段后,必须手动运行composer dump-autoload(可简写为composer du),install或update不会自动触发这步 - Windows 下路径用反斜杠不影响 Composer 解析,但建议统一用正斜杠,避免 IDE 或脚本处理异常
手写 require 后包没装进去
声明 ≠ 安装。composer.json 只是需求清单,不执行命令,vendor 目录不会变,autoload 也不会更新。
- 如果项目已有
composer.lock,仅改require后运行composer install,它会按 lock 文件还原,**忽略你新加的包**;此时必须用composer update vendor/package-name或删 lock 后再 install - 推荐用
composer require vendor/package-name替代手写:它自动写入composer.json+ 执行update+ 刷新 autoload,一步到位 - 加开发依赖?务必加
--dev参数,否则会进require,导致生产环境多装无用包;例如composer require phpunit/phpunit --dev - 改了
require-dev但 CI 报 command not found?确认 CI 脚本是否用了--no-dev参数——该参数会让 Composer 完全跳过require-dev里的包
name 字段写错的静默后果
name 看似只是个标识,但它影响 autoload 行为、包发布、甚至本地路径依赖解析;写错不会报错,但类加载、依赖安装可能随机失败。
- 必须是
vendor/name格式,全小写、斜杠分隔、无空格;"acme/blog-api"✅,"AcmeBlogApi"❌,"blog-api"❌ - 本地项目不想发包?可用占位名如
"local/mytool",但绝不能留空或只写"mytool";否则psr-4自动加载器无法正确推导根命名空间 - 用
path类型仓库 require 本地包时,如果被依赖方的name格式非法,Composer 会静默跳过该包,不提示、不报错、也不装 - 检查方式:运行
composer validate会提示name格式错误;更隐蔽的问题得靠composer show输出的包名是否与你预期一致来反推
最常被忽略的其实是联动动作:改 autoload 必须 dump-autoload,改 require 必须 install/update,改元数据字段必须确保 JSON 合法且位置正确——没有哪一步能省,也没有哪个错误会大声告诉你“你忘了”。










