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



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

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

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

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

但是我也想在对插件进行单元测试时使用vfsStream组件。这意味着我需要在根目录中的 composer.json 文件中要求vfsStream。例如:

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

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

在你的项目根目录中有一个 composer.json,并使用 require-dev 为测试添加开发依赖项

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

新答案:

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

唯一的区别是它不会在"src"目录中,而是隐藏在"供应商"目录中。

AFAIK,Composer还没有处理嵌套的"composer.json"文件,如果有的话。

原答案:

正确的方法是制作一个"require-dev"部分,如下所示:

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

唯一的 composer.json 文件中的require部分之后。

但是,这要求人们在为生产环境安装时使用 --no-dev 标志。

请参阅在作曲器中使用"require-dev"安装软件包

如果您将require-dev部分用于开发包,则人们可以选择不使用它们。他们可以在需要您的包时传递"no-dev"标志。

编辑:如果您使用 src 作为包的主目录,您可以在"composer.json"的"自动加载"部分中进行设置,如下所示:

"autoload": {
    "psr-0": {
        "yourname\yourpackage\": ["src/"]
    }
}

再次编辑:
看起来使用 Composer 安装 Wordpress 插件并非完全没有问题:
在WordPress插件中使用作曲家的叙述

但是,如果您坚持,这篇文章可能会有一些技巧:使用 Composer 管理 WordPress 主题和插件

相关内容

  • 没有找到相关文章

最新更新