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.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”软件包和所有依赖项。
同样位于composer.json
的{{1}},如果我在vagrantin/wp-nonce
而不是cyruscollier/wordpress-develop
设置require-dev
。我正在使用require
或composer update
下载仅“wp-nonce”。
会很感激。
谢谢!
答案 0 :(得分:2)
require-dev
中定义的任何内容始终是您在当前库中提供新功能所需的内容。
然后,如果您依赖另一个库,此库只需要正确处理require
中的内容,但不需要require-dev
。
然后使用此方法登录,您不需要依赖库中require-dev
的一部分,用于您自己的开发。标志本身update --dev
将加载所有内容。
使用方案:
同样在vagrantin / wp-nonce的composer.json中,如果我在require-dev而不是require中设置cyruscollier / wordpress-develop。我只使用作曲家更新或作曲家更新--dev。
下载“wp-nonce”
我认为一切都是正确的。
使用第二种方案,您将vagrantin/wp-nonce
标记为require-dev
,将vagrantin/wp-nonce
标记为cyruscollier/wordpress-develop
require
- 然后,在我看来,这应该在下载时解决,标准调用composer update
。
调用其他步骤
composer self-update
我认为这一切都应该解决问题。