作曲家更新vs作曲家更新--dev

时间:2017-05-17 08:15:21

标签: php composer-php

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。我正在使用requirecomposer update下载“wp-nonce”。

如果对作曲家有充分了解的人可以告诉我这是不是正常行为,那么

会很感激。

谢谢!

1 个答案:

答案 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

调用其他步骤

  • 检查packagist上的更新是否正确加载了您的存储库或您使用的其他服务。
  • 运行composer self-update

我认为这一切都应该解决问题。