pre-install-cmd 可在 composer install 前执行自定义脚本,1. 在 composer.json 的 scripts 中定义命令数组,支持 shell 命令、PHP 脚本和 Composer 别名;2. 对复杂逻辑可使用 PHP 类方法,通过命名空间注册并实现静态函数处理事件,需配合 autoload 加载;3. 注意其仅在 install 前触发,不适用于 update,脚本非零退出码将中断安装,应确保权限与跨平台兼容性。
在使用 Composer 时,可以通过配置pre-install-cmd钩子,在执行命令前自动运行一些自定义脚本。这个机制适用于需要在依赖安装前完成某些操作的场景,比如环境检查、生成配置文件或清除缓存。1. 在composer.json 中定义 pre-install-cmd打开项目根目录下的文件,在字段中添加:说明:可以指定多个命令,按顺序执行。支持 shell 命令(如)和 PHP 脚本(如)。使用前缀可调用已定义的 Composer 命令别名(如 Laravel 的)。2. 使用自定义 PHP 类处理更复杂逻辑对于需要更复杂控制逻辑的情况,可以编写一个 PHP 类来处理钩子事件。先在中注册类方法:PHP 8.5.5PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。下载然后创建对应的 PHP 文件,例如:确保 Composer 能加载该类,可通过注册命名空间:记得运行更新自动加载映射。3. 注意事项执行时机:pre-install-cmd 在执行前触发,但不会在时触发。如需更新前执行,应使用。退出码:如果脚本返回非零状态码,Composer 将中断安装流程。权限问题:确保脚本有执行权限,尤其是在 Linux/macOS 系统上。跨平台兼容:避免使用特定系统的命令(如或),推荐使用 PHP 脚本提升兼容性。基本上就这些。合理利用 pre-install-cmd 可以增强项目的自动化能力,让依赖管理更智能。
composer installcomposer.jsonscriptspre-install-cmd{
"scripts": {
"pre-install-cmd": [
"echo '即将开始安装依赖...'",
"php scripts/check-env.php",
"@php artisan clear-compiled"
]
}
}
echophp scripts/check-env.php@@php artisancomposer.json{
"scripts": {
"pre-install-cmd": [
"MyScripts\Build::preInstall"
]
}
}
scripts/Build.phpgetIO();
$io->write('正在执行前置检查... ');
if (!is_writable('vendor')) {
$io->writeError('vendor 目录不可写! ');
exit(1);
}
}
}
autoload"autoload": {
"psr-4": {
"MyScripts\": "scripts/"
}
}
composer dump-autoloadinstallupdatepre-update-cmddelrm