Composer Packagist 文档翻译

网址:Packagist

一、Packagist说明

Packagist和Composer包仓库不同。

Packagist用于找到包,并让Composer知道代码来源。

可以用Composer管理项目,或者依赖关系读取。

Composer官网:Composer

可以从Github找到packagist.org。

Github中Packagist:GitHub - composer/packagist: Package Repository Website - try https://packagist.com if you need your own -

1.1 社区

如果有对Composer问题或想求助,加入irc.libera.chat的#composer频道。

可以在Composer Documentation中发现更多社区资源。

Composer Documentation网址:Community - Composer

1.2 捐助/捐赠

要报告问题或贡献代码,可以在Github上面找到源存储库。

如果想在财务上支持这项目的托管和维护,最好的方法是通过私用Packagist。

Packagist官网:Private Packagist

可以快速并可靠的安装包,提供私有的包管理仓库。资金用于Composer和Packagist维护。

二 、Packagist 使用

2.1 包命名

包必须命名,且不可改变,命名的名字在平台上唯一,以避免冲突。

项目名字由供应商名字和项目名字以“/”符号拼接。

供应商的名字是为了防止冲突。比如供应商igorwseldaek都有一个项目json,可以命名为igorw/json 和 seldaek/json。

有时供应商名字和项目名字会相同,例如monolog/monolog。

为了包名字的唯一性,推荐这种写法。可以在同一供应商下增加更多项目。

如果维护一个项目,可以解耦成几个小项目,便于维护。

包命名例子:

// 供应商名和项目名相同
monolog/monolog

//可能是drupal模块(可能由monolog提供)
monolog/monolog-drupal-module

//Acme是一个公司或者个人,可以用共同名字(邮箱)命名他们的包。只要在他们自己的供应商命名空间下,就不会与其他包产生冲突
acme/email

 包被发布之后,供应商名字在packagist中受保护。

这意味在packagist中不可发布供应商名字已存在且未授权的包。

为了能够发布一个已经存在的供应商名称的包,需要成为该供应商中至少一个包的维护者。

包名和供应商命名允许包含小写字符a-z、数字0-9、字符“.”、"_"、“-”。

每个单词必须以字母或数字开头。

2.3 创建composer.json文件

composer.json文件应该位于git/svn库中,用于在packagist和composer中描述项目。

典型文件内容如下:

{
    "name": "monolog/monolog",
    "type": "library",
    "description": "Logging for PHP 8.0",
    "keywords": ["log","logging"],
    "homepage": "https://github.com/Seldaek/monolog",
    "license": "MIT",
    "authors": [
        {
            "name": "Jordi Boggiano",
            "email": "j.boggiano@seld.be",
            "homepage": "http://seld.be",
            "role": "Developer"
        }
    ],
    "require": {
        "php": ">=8.0.0"
    },
    "autoload": {
        "psr-0": {
            "Monolog": "src"
        }
    }
}

大部分信息见名知意易于理解,keywords是标签,require是依赖列表 。

可以是其他包,不仅是像例子中仅有php版本。

可以使用ext-foo要求php扩展,例如ext-curl。

大多数扩展并不公开版本信息,除非使用的版本已确定公开,否者使用"ext-curl":"*"来允许任何版本的扩展都更安全。

例子中type字段代表这是一个库。

要是为框架等做插件,如果集成了composer,可能自定义插件的type,可以使用框架自带的安装程序来安装包。

在没有自定义type的情况下,可以省略或使用“library”。

只要在存储库根目录中提交了这个文件,就可以通过输入公共存储库URL将包提交给Packagist。

提交地址:Log in - Packagist

2.2 包版本管理

版本号从库中自动获取,官网是写VCS库,没查到是啥。

管理版本控制的最简单方法,是从composer.json文件中省略version字段。

版本号从标签(tags)和分支(branch)名字中解析。

标签/版本的名称,需要符合'X.Y.Z'或者 'vX.Y.Z',带有可选的后缀,RC、beta、alpha或补充版本。

例子:

1.0.0
v1.0.0
1.10.5-RC1
v4.4.4beta2
v2.0.0-alpha
v2.0.4-p1

分支自动使用dev后缀定义版本,便于想要尝试库的最新和最好的版本用户轻松安装,但不以为可以不标记版本号。

强烈建议使用语义版本控制。

语义版本控制:Semantic Versioning 2.0.0 | Semantic Versioning

2.4 更新计划

如果启用了JS,新包将在提交后立即被抓取。

没有自动更新的现有包,包括GitHub/BitBucket/GitLab/Gitea钩子,将每周抓取一次更新。

如果启用钩子,则无论何时推送都会抓取包,或者至少每月抓取一次,以防抓取失败。

如果以维护者的身份登录,还可以在包页面上手动更新。

强烈推荐为所有的包设置GitHub/BitBucket/GitLab/Gitea钩子。这减少平台负载,并保证所有的包立即更新。

三、如何更改包

3.1 Github Hook

启动Packagist服务钩子,确保当提交GitHub时所有的包永久立即更新。

操作方式:

  • 确保可通过GitHub登录。若账户未连接GitHub可在个人资料中设置。若已登录,需要主要后再次通过GitHub登录,以确保授予平台所需的权限。
  • 确保Packagist平台接口可以访问所有需要发布包的GitHub组织。
  • 检查您的包列表,看看是否有关于未自动同步的警告。
  • 如果仍然需要在某些包上设置同步,请尝试触发手动帐户同步,以使Packagist再次尝试帐户上设置钩子。归档存储库无法设置,因为它们在GitHub的API中是只读的。

可使用如下值手动设置GitHub网络钩子:

  • Payload URL:https://packagist.org/api/github?username=username username是可变数据,根据个人账户名字
  • Content Type:application/json
  • Secret:Packagist平台token

Packagist平台token设置:Log in - Packagist

3.2 Bitbucket WebHooks

使用Bitbucket网络钩子,进入Bitbucket存储库中,打开设置中“Webhooks”菜单,加一个新钩子。

加入Packagist平台端点,包含用户名和api的Token。

输入https://packagist.org/api/bitbucket?username=username&apiToken=API_TOKEN作为URL。

保存更改,就完成了。

3.3 GitLab 服务

要启用GitLab服务集成,进入GitLab存储库,从菜单中打开Settings > Integrations页面。

在Project Services列表中搜索Packagist。

选中“Active”框,输入packagist平台用户名和API令牌。

保存更改,就完成了。

3.4 Gitea Webhook

从Gitea v1.17开始支持Packagist上的自动包更新。

要启用giea webhook,进入giea存储库,打开Settings > Webhooks页面,然后单击“Add Webhook”。

从下拉菜单中选择“Packagist”。

在表单中输入packagist平台用户名、API令牌和包的packagist URL。所有其他选项可以保持不变。

保存更改,就完成了。

3.5 手动hook

如果不适用Bitbucket或者GitHub,可以从git post-receive钩子或类似的钩子中手动调用。

必须提交请求:

#请求方式
POST

#请求头
content-type:application/json

#请求路径
https://packagist.org/api/update-package?username=username&apiToken=API_TOKEN

#请求体
{
    "repository":
    {    
        "url":"PACKAGIST_PACKAGE_URL"
    }
}
curl -XPOST -H'content-type:application/json' 'https://packagist.org/api/update-package?username=lsswear&apiToken=API_TOKEN' -d'{"repository":{"url":"PACKAGIST_PACKAGE_URL"}}'

3.6 api token

设置地址:Log in - Packagist

3.7 IP白名单

如果限制ip并需要授予packagist平台工作者访问权限,我们会维护一个公共ip列表。

设置页面:Log in - Packagist

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值