post-create-project-cmd事件可在Composer创建项目后自动执行初始化操作。1. 在composer.json的scripts中定义该事件,如运行init.php、修改权限、复制.env文件;2. 可使用PHP类(如ProjectInit::run)处理复杂逻辑,实现目录创建、密钥生成等;3. 注意脚本权限、路径相对性及退出码;4. 适用于生成密钥、配置复制、Git初始化等场景,提升自动化与体验。

在使用 Composer 创建新项目时,可以通过 post-create-project-cmd 事件自动执行初始化脚本。这个事件会在 `composer create-project` 命令成功执行后触发,非常适合用于设置初始配置、生成环境文件、运行数据库迁移等操作。
1. 配置 post-create-project-cmd 事件
要在创建项目后自动执行脚本,需在项目的 composer.json 文件中定义 scripts 字段:
{
"name": "your-vendor/your-project",
"scripts": {
"post-create-project-cmd": [
"@php init.php",
"chmod -R 755 bin/",
"cp .env.example .env"
]
}
}
上面的配置表示在项目创建完成后会依次执行:
- 运行 PHP 脚本
init.php - 修改
bin/目录权限 - 复制示例环境文件为正式环境文件
2. 使用自定义 PHP 类作为脚本处理器
你也可以编写一个 PHP 类来处理更复杂的初始化逻辑。例如创建一个 ProjectInit.php 文件:
然后在
composer.json中引用它:"scripts": { "post-create-project-cmd": [ "ProjectInit::run" ] }3. 注意事项
- 确保脚本具有可执行权限(特别是 shell 脚本)
- 路径是相对于项目根目录的
- 如果脚本返回非零退出码,Composer 会认为命令失败
- 该事件只在
create-project时触发,不会在普通install或update时运行










