Composer脚本可自动化PHP项目部署,通过在composer.json的scripts字段定义post-install-cmd、post-update-cmd、pre-deploy和post-deploy等命令,实现安装、更新或部署时自动执行清缓存、运行迁移等操作;支持直接运行composer run触发脚本,也可集成到CI/CD流程中;复杂逻辑可用PHP类处理,如指定App\Console\DeploymentHandler::onDeploy静态方法;还可与Deployer、Capistrano或Shell脚本结合,实现拉取代码、执行composer install并自动触发相应钩子,从而提升部署效率与一致性。

Composer 的脚本功能可以极大简化 PHP 项目的自动化部署流程。你可以在 composer.json 中定义一系列命令,在安装、更新或部署时自动执行,比如清缓存、生成配置、运行迁移等。
定义自定义脚本(Scripts)
在 composer.json 的 scripts 字段中添加你要执行的命令:
- post-install-cmd:Composer 安装完成后触发
- post-update-cmd:更新依赖后执行
- pre-deploy 或 post-deploy:自定义部署钩子
示例:
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan migrate --no-interaction",
"php artisan config:cache"
],
"pre-deploy": [
"echo 'Starting deployment...'",
"git pull origin main"
],
"post-deploy": [
"php artisan route:clear",
"php artisan view:clear"
]
}
执行自定义脚本
你可以通过 composer run 手动触发脚本:
- composer run pre-deploy
- composer run post-deploy
也可以在 CI/CD 脚本中调用这些命令,实现自动化流程。
使用 PHP 类处理复杂逻辑
对于更复杂的操作,可以编写一个 PHP 类来处理脚本逻辑:
"scripts": {
"post-deploy": "App\\Console\\DeploymentHandler::onDeploy"
}
确保该类已注册到自动加载中,并提供静态方法:
namespace App\Console;
class DeploymentHandler
{
public static function onDeploy($event)
{
echo "执行部署后任务...\n";
// 执行文件权限设置、日志清理等
}
}
结合部署工具使用
在实际项目中,可将 Composer 脚本与部署工具(如 Deployer、Capistrano 或 Shell 脚本)结合:
- 部署脚本先拉取代码
- 执行 composer install --optimize-autoloader --no-dev
- 自动触发 post-install-cmd 和 post-deploy
这样整个流程无需手动干预,提升部署效率和一致性。
基本上就这些。合理利用 Composer 脚本,能让你的 PHP 项目部署更简单、可靠。










