composer.json 必须严格遵循 JSON 语法:键值间冒号后需空格、禁用尾逗号、字符串必须双引号包裹;validate 仅校验语法,–strict 和 dump-autoload 可进一步验证语义与自动加载。
composer.json 文件里冒号后面少了空格
JSON 格式要求键名和值之间用 : 连接,且 : 后必须跟一个空格,否则 composer validate 会报 JSON parse error: syntax error, unexpected ':' 或类似提示。这不是 Composer 特有规则,而是 PHP 内置的 json_decode() 解析失败导致的。
- 错误写法:
"name":"my/package" - 正确写法:
"name": "my/package"(注意:后的空格) - 所有键值对都需遵守,包括嵌套对象和数组中的元素
- 用 VS Code、PHPStorm 等编辑器开启 JSON 验证插件,能实时标红这类低级语法问题
末尾多了一个逗号(trailing comma)
标准 JSON 不允许对象或数组最后一项后面带逗号,但很多编辑器(尤其 JavaScript 环境)默认允许。Composer 使用严格 JSON 解析,遇到 "autoload": { "psr-4": { "App\\": "src/" }, } 这种结尾逗号就会直接报错:JSON parse error: syntax error, unexpected '}'。
- 检查
require、autoload、scripts等大括号或方括号内的最后一行 - 特别留意从其他项目复制粘贴过来的配置块,容易带入多余逗号
-
composer validate --no-check-publish可跳过发布相关校验,聚焦语法本身
字符串值没用双引号包裹
JSON 规定字符串必须用双引号 ",单引号 ' 或不加引号(如 dev-main)都会导致解析失败。常见于 version、branch-alias、minimum-stability 字段。