
运行 composer init 启动交互式向导生成 composer.json,需确认才保存;关键项包括 Package name(vendor/name)、Type(project 或 library)、License(SPDX 标识符)等;添加依赖时仅支持 require,require-dev 需手动编辑;最终须核对 autoload、require 约束及完整 JSON 内容。
运行 composer init 会启动一个交互式向导,逐项询问项目基本信息,并生成初始的 composer.json 文件——但它不会自动写入磁盘,必须确认最后一步才会保存。
向导依次提问,多数可直接回车跳过(使用默认值),但以下几项影响后续依赖管理逻辑:
Package name:格式为 vendor/name(如 myorg/myapp),决定 Packagist 上的唯一标识;若留空,Composer 会尝试从当前目录名推断,但不推荐依赖此行为Description:纯文本描述,不影响功能,但发布到 Packagist 时会显示Author:格式为 name ,用于 composer show 和包元数据Type:默认 library,若项目是可执行应用,应改为 project(影响某些自动化工具识别)License:填 MIT、GPL-3.0 等 SPDX 标识符,非自由文本Minimum Stability:默认 stable,若需安装 dev- 或 alpha 版本的包,此处需调低(如 dev),但会降低依赖安全性向导末尾会问是否立即添加依赖。选 yes 后进入循环输入模式:
monolog/monolog),回车后提示输入版本约束(如 ^2.0、dev-main 或留空用最新稳定版)require-dev 依赖(如
phpunit/phpunit)在此阶段无法单独指定,必须手动编辑生成的 composer.json 或后续用 composer require --dev
向导最后会打印出即将写入的完整 JSON,并询问 Do you confirm generation?。此时应重点核对:
autoload 字段为空——这意味着类不会被自动加载,后续必须手动配置(如加 "autoload": {"psr-4": {"App\\": "src/"}})require 中的版本约束是否合理(例如是否误用了 * 或 dev-master)bin 字段未被初始化,需自行添加
{
"name": "myorg/myapp",
"type": "project",
"license": "MIT",
"description": "My awesome app",
"authors": [
{
"name": "Your Name",
"email": "you@example.com"
}
],
"require": {
"monolog/monolog": "^2.0"
}
}
交互式创建省事,但生成的文件极简,真实项目几乎都需要立刻补全 autoload、scripts 和 config 等字段——别指望向导替你做这些。