为什么要在我的插件中包含Composer.json文件?

时间:2016-01-02 作者:henrywright

明确包含作曲家的优势是什么。如果我的插件的潜在用户已经可以通过WPackagist以包的形式获取它,那么我的插件中的json文件是什么?

2 个回复
最合适的回答,由SO网友:gmazzap 整理而成

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 pingall 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.

SO网友:birgire

这个composer.json 文件通常包含在readme.txt 文件因此,它可以作为插件依赖项的自述文件。

由于Composer是许多开发人员的工具箱,它可以帮助他们更好地理解插件是如何连接在一起的。

例如abondoned。org插件,将该文件提供给想要分叉、更新和扩展它的人将非常方便。

如果我们想在packagist上注册我们的插件。org,那么我们当然需要它。