composer.json 关键字段填错会导致安装失败或装错包:name 和 version 必须成对出现才被识别为可发布包;vendor 名仅允许小写字母、数字和短横线;require-dev 依赖默认随 install 安装,需 –no-dev 才跳过;psr-4 路径须带末尾斜杠;scripts 中应使用 ./vendor/bin/ 下工具而非全局命令。
composer.json 不是配置越全越好,关键字段填错一个,composer install 就可能失败或装错包。
name 和 version 字段必须成对出现才被识别为可发布包
只有当你想把项目发布到 Packagist 或私有仓库时,name(格式为 vendor/name)和 version 才是必需的。本地开发项目可以省略 version,但一旦写了 name 却没写 version,Composer 会把它当“无版本包”处理——某些命令(如 composer require 指定版本)会报 Could not find package。
-
name中的 vendor 名不能含大写字母、下划线或点号,只允许小写字母、数字、短横线 - 如果用
composer init生成,它默认帮你填了version,但实际应删掉——让 Composer 从 Git tag 自动推断更可靠 - 私有包若走
path仓库类型,version可以是dev-main这类分支别名,但必须和源目录下的composer.json一致
require 和 require-dev 的依赖隔离不是靠文件分开,而是靠命令开关
require 里的包在 composer install --no-dev 或生产环境部署时会被跳过;require-dev 里的包(比如 phpunit/phpunit)默认也会装,除非你显式加 --no-dev。很多人误以为只要不写 --dev 就不会装 dev 包,其实相反。
-
composer install默认装全部,包括require-dev -
composer update默认也更新require-dev,除非加--no-dev - CI/CD 脚本里漏掉
--no-dev,可能导致生产镜像里多出测试工具,增大体积甚至引入安全风险
autoload 的 psr-4 配置路径必须是相对于 composer.json 的,且结尾要带反斜杠
"psr-4": {"App\": "src/"} 是正确写法;写成 "App\": "src"(缺末尾斜杠)会导致 Composer 找不到 src/Foo.php 里的 App\Foo 类——它会去查 srcFoo.php。