【问题标题】:How to force dev-dependencies from a dependency to also install with composer?如何强制依赖项中的开发依赖项也与作曲家一起安装?
【发布时间】:2018-05-12 20:41:31
【问题描述】:

我目前正在开发一个包(cms),它对某个包(代码生成器)具有开发依赖性以创建代码。生产中不需要这个包。

但是,在创建使用 cms 包的网站时,没有安装开发依赖项(包括代码生成器)(顺便说一句,这是正确的作曲家行为)。

但在开发网站时,需要代码生成器。

有没有办法在安装包时强制安装某个开发依赖项?

【问题讨论】:

  • 如果你需要这个代码生成器包,你应该把它添加到你的composer.json。
  • 你可以运行composer install --dev getcomposer.org/doc/03-cli.md#install
  • @rob006 是的,我可以这样做,但这意味着我需要为我使用该软件包的每个站点以及所有其他想要使用该软件包的人都这样做。这正是我想要防止的。
  • @DenzylDick 只安装根目录下定义的包,不安装依赖包

标签: php composer-php


【解决方案1】:

这是不可能的。依赖关系可以是包正常工作所必需的(那么它应该在require部分并且它总是被安装),或者只需要这个包的开发(那么它应该在@ 987654322@ 部分,仅在包存储库为根时安装)。两者之间没有任何东西。如果您的包需要此代码生成器依赖项工作,则它显然无法进入第一类(require 部分)。

通常在这种情况下,最好的解决方案是将这个包分成两个包:常规包和dev 包,所有工具仅在开发过程中使用。所以它应该通过2个命令安装:

composer require myvendor/mypackage
composer require myvendor/mypackage-dev --dev

这仍然需要每个人安装两个包而不是一个,但如果有正确的文档说明,这应该不是什么大问题。结果应该更清楚(应该很明显myvendor/mypackage-dev 包的目的是什么)并给予包所有者更多的控制权(他可以轻松地为dev 包添加新的依赖项)和最终用户(他总是可以跳过安装myvendor/mypackage-dev 如果他不想使用这个代码生成器)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2015-04-06
    • 2014-04-20
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多