composer --version
Composer version 1.4.1 2017-03-10 09:29:45
和
Composer version 1.4.2 2017-05-17 08:17:52
根据 composer documentation当您运行 composer update
时,它默认运行 composer update --dev
--dev: Install packages listed in require-dev (this is the default behavior).
但在我的情况下,这个composer.json:
{
"minimum-stability": "dev",
"require-dev": {
"vagrantin/wp-nonce": "*"
},
"require": {
}
}
如果我运行composer update
,它仅在此处下载相应的包vagrantin/wp-nonce
。
但是如果我运行composer update --dev
,它将下载该包的所有依赖项(vagrantin/wp-nonce
)取决于,这是预期的行为。
我在此设计中不明白的是,composer update --dev
被宣布为已弃用。
如果有人对此行为有任何澄清,我们将不胜感激。
编辑
这是我确定的重现此行为的组合。
在我全新的 Composer 项目中,我正在设置此 composer.json
文件
{
"minimum-stability": "dev",
"require-dev": {
"vagrantin/wp-nonce": "^0.1"
},
"require": {
}
}
在包 vagrantin/wp-nonce
中,我设置了这个 composer.json
{
"name": "vagrantin/wp-nonce",
"description": "Playing and testing Wordpress nonces with phpunit tests",
"keywords": ["wordpress", "test", "phpunit"],
"type": "library",
"license": "GPLv2.0+",
"authors": [
{
"name": "Vagrantin",
"homepage": "http://ll.ducorporation.com"
}
],
"require": {
"cyruscollier/wordpress-develop" : "*"
},
"require-dev": {
},
"autoload": {
"classmap": [
"src"
]
}
}
使用此设置,如果我运行 composer update
,我只会下载“wp-nonce”包。
但是,如果我运行composer update --dev
,我会下载“wp-nonce”包和所有依赖项。
也在 vagrantin/wp-nonce
的 composer.json
中,如果我在 中设置
而不是 cyruscollier/wordpress-develop
>require-devrequire
。我仅使用composer update
或composer update --dev
下载“wp-nonce”。
如果对 Composer 有深入了解的人可以告诉我这是否是正常行为,我将不胜感激。
谢谢!
最佳答案
require-dev 中定义的任何内容始终是您在当前库中提供新功能所需的内容。
然后,如果您依赖另一个库,则该库只需要正确运行 require
中的内容,但不需要 require-dev
。
然后用这个登录,你不需要依赖库中的部分require-dev
,用于你自己的开发。该标志本身 update --dev
将加载所有内容。
场景:
Also in the composer.json of vagrantin/wp-nonce, if I'm setting cyruscollier/wordpress-develop in require-dev instead of require. I'm downloading only "wp-nonce" either with composer update or composer update --dev.
我认为一切都是正确的。
在第二种情况下,您将 vagrantin/wp-nonce
标记为 require-dev
,并在 vagrantin/wp-nonce
中你将cyruscollier/wordpress-develop
作为require
- 那么,在我看来,这应该在下载两者时解决,并使用标准调用composer update
。
调用附加步骤
- 检查 packagist 的更新如果您的存储库或您使用的其他服务已正确加载。
- 运行
composer self 更新
我认为这一切应该可以解决问题。
关于php - Composer 更新与 Composer 更新 --dev,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44019179/