我正在做一个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 主题和插件