如何在一个命令中使用 composer require vendor/normal_package
和 composer require vendor/dev_package --dev
?我想要一个需要2个软件包的CLI命令,一个包含在"正常" require
中,一个进入require-dev
节。
背景信息:我有一个composer.json文件:
{
"require": {
"drupal/core": "^8.6.7"
},
"require-dev": {
"webflo/drupal-core-require-dev": "^8.6.7"
}
}
这两个软件包始终需要同时更新。通常我只是做一个可以正常工作的composer update drupal/core webflo/drupal-core-require-dev --with-dependencies
。
,但有时我明确需要需要一个新的最小版本,并且我想在shell脚本中进行一次以一次更新多个项目(无需手动编辑composer.json
)。我无法运行两个命令
composer require drupal/core:^8.6.10
composer require webflo/drupal-core-require-dev:^8.6.10
连续,因为它们彼此依赖。
我如何在一个单个命令中需要一个普通和一个开发包?
如果您的composer.json
有循环依赖关系,并且该依赖关系在require
和require-dev
上分开,则目前不可能更新并仅使用一个命令设置新的Min版本。但是我找到了通过使用--no-update
选项的要求命令来节省很多时间的方法。
以下是我当前正在使用的代码(drupal/core
是普通软件包,webflo/drupal...
是Dev软件包,版本^8.7.1
是我要执行的新最小版本):
# include both packages in the require section, but don't update
# this is much faster than normal require with update
composer require --no-update drupal/core:^8.7.1 webflo/drupal-core-require-dev:^8.7.1
# move the dev package back into the require-dev section
composer require --dev --no-update webflo/drupal-core-require-dev:^8.7.1
# now run the update, this will take some time (you can not use --no-dev here)
composer update drupal/core webflo/drupal-core-require-dev:^8.7.1 more_stuff/*
# optional: remove the dev-packages again (this is quite fast too)
composer install --no-dev
我不会将问题标记为回答,因为这只是节省时间的解决方法,而不是真正的解决方案。