php - Composer 更新与 Composer 更新 --dev

标签 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 项目中,我正在设置此 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-noncecomposer.json 中,如果我在 中设置 cyruscollier/wordpress-develop >require-dev 而不是 require。我使用composer updatecomposer 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/

相关文章:

php - 如何在 braintree 中获取客户信用卡列表

php - 需要帮助将调查响应从 HTML 表单传递到 MySQL 表

php - 如何使用 Select 查询结果(数组)进行新查询并显示每个值的结果?

php - 使用哪个 Ratchet 组件

linux - 如何在 Linux PHP 应用服务上全局安装 Composer?

php - 使用 xmlns :xlink attribute in a node 创建 XML

php - 帮我找个轻便的 php/html/js IDE

php - 如何创建 beta 版本的 Composer 包?

composer-php - 如何使用composer强制安装 "incompatible"TYPO3-Extension?

Laravel Spark - 无法连接到存储库