php - 如何从 composer.json 安装单个特定包以安装开发人员工具?
问题描述
我在我的 GitLab CI/CD 管道中使用PHP_CodeSniffer来确保我的代码格式正确。作业如下所示:
stages:
- test
- build
- deploy
coding_standard:
stage: test
script:
- curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar
- php phpcs.phar --extensions=php .
这按预期工作。但是,此处未指定该工具的确切版本。因此,如果突然出现 PHP_Codesniffer 的新主要版本,则 CI/CD 作业可能会失败,尽管我的 PHP 代码没有更改。
此外,我目前在本地机器上全局安装了该工具。这样一来,我就无法为每个 PHP 项目提供特定版本的工具。
现在我想将该工具添加为Composer dev-dependency ( require-dev
)。
在 CI/CD 工作中,我会调用composer install
而不是通过 curl 下载该工具。
问题:这将不必要地下载所有包,而不仅仅是 PHP_Codesniffer 及其依赖项。我可以防止吗?
解决方案
你不能用作曲家做到这一点。您甚至无法安装“仅开发依赖项”。这是所有的依赖,所有的非开发依赖,仅此而已。
将这种依赖项安装为项目依赖项通常不是一个好主意,因为您很容易因为超出实际应用程序需求的原因而进入依赖地狱。开发工具不应该给您的部署策略带来这种复杂程度和危险。
为了解决这个问题,您可以使用Composer Bin Plugin之类的东西来隔离这些依赖项,然后通过 composer 安装它们。然后在 CI 上,您composer install
只在此目录上运行,并从该位置运行该工具(或将其符号链接bin
到无论如何,所有依赖项)。
推荐阅读
- javascript - JavaScript 代理在 ie11 上无法正常工作
- javascript - Promise 的两个怪异行为
- php - MariaDB Prepared Statement 返回格式错误的通信数据包
- javascript - 可编辑JQuery FullCalendar 的日单元格中的字段不再有效
- reactjs - React-Redux,LocalStorage:TypeScript 错误同时保存数据
- mysql - Moodle:为自定义用户配置文件字段组合两个 SQL
- two-factor-authentication - 如何从链接打开 Google Authenticator?
- excel - RANK() 公式排除虚拟列中具有特定值的行
- python - 将 xml 转换为 csv 并依靠 python
- python - 无法将输入数组从形状 (0,495,64,1) 广播到形状 (496,64,1)