运行 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或留空用最新稳定版) - 输入空行结束添加;若中途输错,无法撤回,只能 Ctrl+C 中断重来
- 注意:
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 等字段——别指望向导替你做这些。










