如何在1个项目中拥有2个composer.json文件?

时间:2016-02-16 12:28:19

标签: php composer-php

我正在开发一个WordPress插件项目。这是我的目录结构:

├── src/
│   ├── plugin-name.php
│   └── readme.txt
├── tests/
└── ...

我想在插件中包含一个composer.json文件,以便用户可以根据需要安装Composer。例如:

├── src/
│   ├── composer.json
│   ├── plugin-name.php
│   └── readme.txt
├── tests/
└── ...

但是当我单元测试插件时,我也想使用vfsStream组件。这意味着我需要在我的root中的composer.json文件中要求vfsStream。例如:

├── src/
│   ├── composer.json
│   ├── plugin-name.php
│   └── readme.txt
├── tests/
├── composer.json
└── ...

我不确定单个项目是否可以有2个composer.json文件。有2个composer.json文件正确的方法去做吗?

2 个答案:

答案 0 :(得分:2)

在项目根目录中有一个composer.json,并使用require-dev

为测试添加开发依赖项

https://getcomposer.org/doc/04-schema.md#require-dev

答案 1 :(得分:0)

新答案:

我认为最好的方法是将实际的Wordpress插件转换为Composer包,然后在开发模式项目中使用它。

唯一的区别是它不会出现在' src'目录但隐藏在“供应商”中。 。目录

AFAIK,Composer不处理嵌套' composer.json'文件,如果有的话。

原始答案:

正确的方式是制作一个' require-dev'部分,像这样:

  "require-dev": {
    "whoever/vfsStream": "*"
},

这要求人们在安装生产时使用require标志。

请参阅Using "require-dev" to install packages in composer

如果您使用--no-dev部分来开发软件包,那么您可以选择不使用它们。他们可以通过“没有 - 开发”。需要你的包裹时标记。

编辑: 如果您使用require-dev作为软件包的主目录,则可以在您的' composer.json'中进行设置。在自动加载'这样的部分:

src

再次编辑:
看起来使用Composer安装Wordpress插件并非完全没有问题:
A Narrative of Using Composer in a WordPress Plugin

然而,如果你坚持,可能会有这个帖子的伎俩: Using Composer to manage Wordpress themes and plugins