如何仅从composer.json安装指定require-dev开发工具包而不安装全部依赖
GitLab CI 仅安装PHP_CodeSniffer Composer依赖的解决方案
方案1:使用Composer 2.2+ 专属参数仅安装指定依赖
该方案可完美满足你把PHP_CodeSniffer作为项目dev依赖、同时不安装其他无关包的需求:
- 本地先将对应版本的工具加入项目依赖,执行命令:
composer require --dev squizlabs/php_codesniffer:^3.7
可自行修改版本号指定你需要的大版本,确保本地和CI环境版本一致。 - 修改CI作业配置如下:
coding_standard: stage: test cache: paths: - vendor/ script: - composer install --no-scripts --no-progress --only dev:squizlabs/php_codesniffer - ./vendor/bin/phpcs --extensions=php .
参数说明:
--only dev:squizlabs/php_codesniffer表示仅安装require-dev声明的PHP_CodeSniffer及其依赖包,不会安装其他生产依赖、其他dev依赖- 新增cache配置可缓存vendor目录,避免每次作业重复下载依赖,提升运行效率
低版本Composer兼容方案
如果你的CI环境Composer版本低于2.2,不支持--only参数,可改用以下脚本:
coding_standard: stage: test cache: paths: - vendor/ script: - composer require --dev squizlabs/php_codesniffer:^3.7 --no-update - composer update squizlabs/php_codesniffer --with-dependencies --no-scripts --no-progress - ./vendor/bin/phpcs --extensions=php .
该方式同样只会安装PHP_CodeSniffer及其依赖,不会触发其他包的安装。
方案2:继续使用phar包,指定固定版本
如果你不想调整Composer依赖,也可以直接通过固定版本号下载phar包解决最初的版本不稳定问题,同时不需要处理依赖安装:
coding_standard: stage: test script: - curl -OL https://github.com/squizlabs/PHP_CodeSniffer/releases/download/3.7.2/phpcs.phar - php phpcs.phar --extensions=php .
你可以将版本号替换为你需要的任意版本,本地也可在项目内内置对应版本的phar包或拉取脚本,实现多项目版本独立。
内容的提问来源于stack exchange,提问作者quick-brown-fox
相关产品推荐
相关产品推荐

