什么是Packagist?

Packagist是默认的Composer包存储库。它可以让您找到包,并让Composer知道从哪里获取代码。您可以使用Composer来管理项目或库的依赖项-请在作曲家网站.

你可以在上找到packagist.org的来源github.

社区

如果您有关于作曲家的问题或想帮忙,请加入我们#作曲家irc.libera.chat上的频道。您可以在中找到更多社区资源作曲家文档.

捐款/捐赠

要报告问题或贡献代码,您可以在上找到源存储库github.

如果你想在财务上支持项目的托管和维护,最好的方法是退房并使用私人包装商它可以帮助您快速可靠地安装软件包,为您提供私有软件包存储库,并将资金用于Composer和Packagist维护!

如何提交包裹?

为包命名

首先,您必须选择一个包名称。这是一个非常重要的步骤,因为它不能改变,它应该足够独特,以避免未来发生冲突。

包名称由供应商名称和由/。供应商名称的存在是为了防止命名冲突。例如,通过同时包含供应商名称伊格沃塞尔代克可以将库命名为杰森通过命名他们的包igorw/json公司seldaek/json公司.

在某些情况下,供应商名称和软件包名称可能相同。例如“monog/monog”。对于具有唯一名称的项目,建议这样做。它还允许以后在同一供应商下添加更多相关项目。如果您维护一个库,这将很容易将其拆分为更小的解耦部分。

以下是供参考的典型软件包名称列表:

//Monolog是一个库,因此供应商名称和包名称是相同的。独白//这可能是drupal模块的名称(由monog维护/提供,//如果是drupal团队做的,那么供应商就是drupal)。独白/独白-rupal-module//Acme是这里的一家公司或个人,他们可以用通用名称(电子邮件)命名他们的包。//只要它位于他们自己的供应商名称空间中,它就不会与其他任何人冲突。acme/电子邮件

packagist上的供应商名称在发布具有该名称的包后即受到保护。这意味着您无法在未经许可的情况下发布packagist上已存在供应商名称的包。为了能够为已经存在的供应商名称发布包,您需要是该供应商中至少一个包的维护者。包装和供应商名称允许包含小写字母(a-z)、数字(0-9)和字符“.”、“-”和“_”。每个必须以字母或数字开头。

创建composer.json文件

composer.json文件应该位于包的git/svn/..的顶部。。存储库,是您向packagist和composer描述包的方式。

典型的composer.json文件如下所示:

{“name”:“monog/monog”,“type”:“库”,“description”:“PHP 8.0的日志记录”,“keywords”:[“log”,“logging”],“主页”:“https://github.com/Seldaek/monolog网站",“许可证”:“MIT”,“作者”:[{“name”:“Jordi Boggiano”,“电子邮件”:“j.boggiano@seld.be",“主页”:“http://seld.be网站",“角色”:“开发人员”}],“要求”:{“php”:“>=8.0.0”},“自动加载”:{“psr-0”:{“Monolog”:“src”}}}

大多数信息都是显而易见的,关键字是标记,require是包具有的依赖项列表。这当然可以是包,而不仅仅是php版本。您可以使用ext-foo来要求php扩展(例如ext-curl)。请注意,大多数扩展都不公开版本信息,所以除非您确定它会公开,否则使用它会更安全“外部曲线”:“*”以允许它的任何版本。最后,在本例中,类型字段表示这是一个库。如果你为框架等做插件,如果他们集成了composer,他们可能有一个自定义的插件包类型,你可以用他们自己的安装程序来安装这个包。如果没有自定义类型,可以省略它或使用“库”。

一旦您在存储库根目录中提交了此文件,您就可以提交包裹通过输入公共存储库URL发送给Packagist。

管理包版本

软件包的新版本将自动从您在VCS存储库中创建的标记中获取。

管理版本控制的最简单方法是从composer.json文件中省略版本字段。然后,将根据标记和分支名称解析版本号。

标记/版本名称应与“X.Y.Z”或“vX”匹配。Y.Z',带有RC、beta、alpha或补丁版本的可选后缀。以下是一些有效标签名称的示例:

1.0.01.0.0版1.10.5-RC1v4.4.4β22.0.0-阿尔法2.0.4-p1版

分支将自动显示为“dev”版本,任何想要尝试您的库的最新和最好版本的人都可以轻松安装,但这并不意味着您不应该标记发行版。使用语义版本控制强烈鼓励。

更新时间表

将对新包进行爬网立即提交后,如果您启用了JS。

将爬网未自动更新的现有包(GitHub/BitBucket/GitLab/Gitea-hook)每周一次更新。当钩子被启用时,只要您按下,就会对包进行爬网,如果爬网失败,则至少每月爬网一次。如果您以维护者身份登录,还可以在包页面上触发手动更新。

强烈建议设置GitHub/BitBucket/GitLab/Gitea服务挂钩所有包裹。这减少了我们这边的负载,并确保您的包几乎可以立即更新。检查操作方法在下面.

搜索索引已更新每五分钟。它将索引(或重新索引)自上次运行搜索索引器以来已爬网的任何包。

如何更新包?

GitHub挂钩

启用Packagist服务挂钩可确保您的包在推送到GitHub时始终会立即更新。

为此,您可以:

  • 确保您通过GitHub登录(如果您已经有一个未连接到GitHup的帐户,您可以在您的个人资料中连接它). 如果您已经登录,请先注销,然后再次通过GitHub登录,以确保您授予我们所需的权限。
  • 确保Packagist应用程序可以访问您需要从中发布包的所有GitHub组织。
  • 检查你的包裹清单查看是否有未自动同步的警告。
  • 如果仍需要在某些包上设置同步,请尝试触发手动帐户同步让Packagist再次尝试在您的帐户上设置挂钩。请注意,无法设置存档存储库,因为它们在GitHub的API中是只读的。

不想通过GitHub登录并授予我们webhook配置访问权限?

您可以使用以下值手动配置GitHub webhook:

  • 有效负载URL:https://packagist.org/api/github?用户名=packagist_username
  • 内容类型:应用程序/json
  • 秘密:你的Packagist API令牌
  • 哪些活动?只有事件就足够了。

Bitbucket Webhooks

要启用Bitbucket web挂钩,请转到BitBudge存储库,打开设置并在菜单中选择“Webhooks”。添加新挂钩。您必须输入Packagist端点,其中包含用户名和API令牌。输入https://packagist.org/api/bitbucket?用户名=username&apiToken=api_TOKEN作为URL。保存更改即可完成。

GitLab服务

要启用GitLab服务集成,请转到GitLabs存储库,从菜单中打开“设置”>“集成”页面。在项目服务列表中搜索Packagist。选中“活动”框,输入packagist.org用户名和API令牌。保存更改即可完成。

Gitea Webhook公司

Gitea支持Packagist自v1.17以来的自动包更新。

要启用Gitea webhook,请转到Gitea存储库,打开“设置”>“Webhooks”页面,然后单击“添加webhook”。从下拉菜单中选择“Packagist”。您需要在表单中输入packagist用户名、API令牌和包的packagistURL。所有其他选项可以保持不变。保存更改即可完成。

手动挂钩设置

如果不使用Bitbucket或GitHub,则可以从git-post-receive钩子或类似钩子手动调用通用端点。你必须做一个邮政请求https://packagist.org/api/update-package?username=username&apiToken=api_TOKEN请求正文如下所示:{“存储库”:{“url”:“PACKAGIST_PACKAGE_url”}}

例如,可以使用curl进行此操作:

curl-XPOST-H'内容类型:application/json''https://packagist.org/api/update-package?username=username&apiToken=api_TOKEN'-d'{“存储库”:{“url”:“PACKAGIST_PACKAGE_url”}}'

API令牌

您可以在上找到您的API令牌您的个人资料页.

IP Allowlists公司

如果您试图限制IP,并且需要授予packagist.org工作人员访问权限,我们将维护一个我们的公共IP列表.