是否有类似composer require的功能用于添加Composer自定义脚本?
如何向Composer项目添加自定义脚本?
我正在为新项目搭建自动化部署流程,包括创建Composer项目、添加依赖包等。目前遇到的问题是如何向composer.json中添加自定义脚本。
以下是我的php-init文件片段:
#... 其他脚本... docker run -it --rm --name sr-composer -v "$PWD"/setup:/app hidden-directory/docker/php/php8.1-code-quality bash -c "composer create-project --quiet --prefer-dist laravel/laravel ." || exit $? docker run -it --rm --name sr-composer -v "$PWD"/setup:/app hidden-directory/docker/php/php8.1-code-quality bash -c "composer require --quiet --dev nunomaduro/larastan" || exit $? docker run -it --rm --name sr-composer -v "$PWD"/setup:/app hidden-directory/docker/php/php8.1-code-quality bash -c "composer require --dev brianium/paratest" || exit $? #... 更多脚本...
我希望在生成的composer.json中添加一批后续会用到的自定义脚本,目前我通过jq命令修改文件:
#... 其他脚本... cp composer.json composer-temp.json jq '.scripts += {"xc:instanciate": ["php artisan telescope:install","php artisan migrate:fresh"]}' composer-temp.json > composer.json #... 更多脚本...
请问是否存在类似composer require <package_name>的命令,可在创建Composer项目时定义自定义脚本?我查阅了资料但未找到相关内容,还是我应该继续使用jq来操作composer.json文件?
解答
Composer本身并没有提供类似composer require那样直接批量添加自定义脚本的命令,但有几种更优雅的替代方案:
用Composer原生
config命令添加
虽然没有专门的添加脚本命令,但可以通过composer config直接设置脚本项,完全不需要额外工具:- 单命令形式:
composer config scripts.xc:instanciate "php artisan telescope:install && php artisan migrate:fresh" - 数组多命令形式(和你用jq实现的效果一致):
composer config scripts.xc:instanciate '["php artisan telescope:install", "php artisan migrate:fresh"]' --json
这种方式完全贴合Composer生态,不需要依赖第三方工具,适合标准化流程。
- 单命令形式:
优化现有jq流程
如果你已经熟悉jq且流程中已经集成了它,继续使用也没问题,可优化命令避免临时文件:jq '.scripts += {"xc:instanciate": ["php artisan telescope:install","php artisan migrate:fresh"]}' composer.json > temp.json && mv temp.json composer.json或者安装
moreutils包后用sponge原地修改:jq '.scripts += {"xc:instanciate": ["php artisan telescope:install","php artisan migrate:fresh"]}' composer.json | sponge composer.json预定义模板文件合并
如果有固定的自定义脚本集合,可预先写好composer-template.json模板,创建项目后用jq合并:jq -s '.[0] * .[1]' composer.json composer-template.json > new-composer.json && mv new-composer.json composer.json
总结:优先推荐用composer config命令,完全原生且简洁;如果已经依赖jq,优化后的命令也能高效完成需求。
内容的提问来源于stack exchange,提问作者dehood
相关产品推荐
相关产品推荐

