如何在一个命令中使用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
连续,因为它们彼此依赖。
我如何在一个命令中需要一个普通软件包和一个dev软件包?
答案 0 :(得分:0)
如果您的composer.json
中有循环依赖项,并且该依赖项分布在require
和require-dev
之间,则当前无法使用来更新和设置新的最低版本只是一个命令。但是我发现了一种解决方法,可以通过使用带有--no-update
选项的require-command来节省 的时间。
以下是我当前使用的代码(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
我不会将问题标记为已回答,因为这只是节省时间的解决方法,而不是真正的解决方案。