问题描述
如果我的插件的潜在用户可以通过 WPackagist 将其作为一个包来显式地包含 composer.json 文件在我的插件中的优势是什么?
最佳解决方案
长话短说
如果要支持 Composer,则添加 composer.json
更好,然后让 WPackagist 为您创建一个包。
有几个原因,没有人真的很重要,但考虑到创建 composer.json
不需要太多的努力,这可能值得。
composer.json
的优点
以下是使用 composer.json
的 non-exhaustive 列表。
开发人员友好
当您需要一个软件包时,Composer 查找存储库以查找该特定软件包。 Packagist 和 WPackagist 是 2 个存储库。
不同的是,Packagist 总是由 Composer 解析,而 WPackagist 必须手动添加到项目 composer.json
。
要在 Packagist 上要求插件,您需要在 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
Performance
当一个项目包含更多的存储库时,Composer 会发现所有这些都可以找到有关软件包的信息。
所以添加 WPackagist 存储库,减慢安装速度。还要考虑到所有的服务器都可以关闭,任何共鸣。它比 WPackagist 之外的公司要大得多,所以每个你添加的存储库都是一个额外的可能的故障点。
Configuration
有一个 composer.json
的优点是您可以配置 Composer 将获取插件的方式。
例如,您可以在 name
属性中配置软件包名称,而不是让 WPackagist 为您创建软件包名称。
此外,还有很多配置可以在 composer.json
中完成,只是几个例子:
-
您可以使用
branch-alias
设置来提高插件开发版本的兼容性 -
即使没有依赖关系,也可以使用
require
设置最小 PHP 版本, -
conflict
设置可让您明确告知冲突的程序包…
等等。
所有权意识
当您需要 WPackagist 的插件时,包名称中的”vendor” 部分始终为 wpackagist-plugin
。
所以人们会要求你插件像:
"require": {
"wpackagist-plugin/your-plugin-name":"1.*",
}
如果你把插件放在 packagist 上,你可以使用自己的供应商前缀,我认为更适合营销:
"require": {
"your-name/your-plugin-name":"1.*",
}
Autoload
Composer 为软件包提供自动加载。如果您决定使用 Composer,您可以从中受益。但是,考虑到您将插件运送到官方的售后服务中,您需要考虑到您的大多数用户可能会安装您的插件而不使用 Composer 。这意味着你必须有可能:
-
发送”vendor” 文件夹 (包含自动加载) 内部您的插件文件夹在官方回购
-
使用自定义自动装载机或手动加载机制,以防插件在没有 Composer 的情况下使用。
第二种可能性仅仅是因为您的插件没有由 Composer 处理的依赖关系,否则,出货供应商文件夹是使您的插件在没有 Composer 的情况下工作的唯一可能性,但不是 issue-free:当使用嵌入式供应商文件夹安装不同的插件时,的版本冲突,如果不同的插件运行不同版本的同一个包。
明确作曲家支持
通过添加 composer.json
,让人们知道您明确支持 Composer 。例如,当我搜索一个插件时,在插件文件夹中找到一个 composer.json
对我来说是一个很大的好处,因为我倾向于不使用不这样做的插件。
此外,还有一些工具可以将插件解释为支持 Composer 。
例如,我有一个脚本阻止具有 composer.json
的插件/主题的自动更新。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。