TL;DR如果要支持Composer,请添加composer.json
最好让WPackagist为您创建一个包。
有几个原因,没有人真正重要,但考虑到这一点composer.json
不需要太多努力,可能值得。
composer.json
好处
下面是使用
composer.json
.
开发人员友好的
当您需要一个包时,Composer会查看存储库以找到特定的包。Packagist和WPackagist是两个存储库。
不同之处在于,Packagist总是由Composer解析,而WPackagist必须手动添加到项目中composer.json
.
要在Packagegist上使用插件,您需要在composer.json
:
"require": {
"your-name/your-plugin-name":"1.*",
}
要在WPackagist上需要插件,还需要配置存储库:
"repositories":[
{
"type":"composer",
"url":"http://wpackagist.org"
}
],
"require": {
"your-name/your-plugin-name":"1.*",
}
这在使用命令行时也是相关的,请参见
composer create-project your-name/your-plugin-name
VS
composer create-project wpackagist-plugin/your-plugin-name --repository-url=http://wpackagist.org
性能当一个项目包含更多存储库时,Composer ping
all of them 查找有关包的信息。
因此,添加WPackagist存储库会降低安装速度。还要考虑到所有服务器都可能因任何原因停机。它发生在比WPackagist背后的公司大得多的公司中,因此您添加的每个存储库都可能是另一个失败点。
配置composer.json
您可以配置Composer获取插件的方式。
例如,您可以在name
属性,而不是让WPackagist为您创建包名称。
此外,还有许多配置可以在中完成composer.json
, 仅举几个例子:
您可以使用branch-alias
设置以提高插件开发版本的兼容性,即使没有依赖项,也可以使用require
设置以设置最低PHP版本conflict
设置允许您显式通知冲突包等等。
所有权意识
当您需要来自WPackagist的插件时,包名称的“供应商”部分始终是
wpackagist-plugin
.
因此,人们会要求您使用以下插件:
"require": {
"wpackagist-plugin/your-plugin-name":"1.*",
}
如果您将插件放在Packagegist上,您可以使用自己的供应商前缀,我认为这对营销更有利:
"require": {
"your-name/your-plugin-name":"1.*",
}
自动加载Composer为包提供自动加载。如果您决定使用Composer,您可以从中受益。然而,考虑到您正在将插件交付给官方repo,您需要考虑到大多数用户可能会安装不使用Composer的插件。这意味着你必须具备以下可能性:
将“供应商”文件夹(包含自动加载)发送到官方回购中的插件文件夹中。如果插件使用时没有编写器,请使用自定义自动加载或手动加载机制之所以提到第二种可能性,是因为您的插件没有由Composer处理的依赖项,否则发货供应商文件夹是使插件在没有Composer的情况下工作的唯一可能性,但并非没有问题:当不同插件与嵌入式供应商文件夹一起安装时,如果不同插件提供相同软件包的不同版本,则可能会发生版本冲突。
通过添加composer.json
您让人们知道您明确支持Composer。例如,当我搜索插件时composer.json
插件文件夹对我来说是一个很大的好处,因为我倾向于不使用不能做到这一点的插件。
此外,还有一些工具针对明确支持Composer的插件。
例如,我有一个脚本,可以防止自动更新具有composer.json
.