创建自己的composer包并设置自动同步github

登录github,创建自己的仓库 composer-test
值得一提的是,Packagist可以创建私有包,github也能创建私有仓库。

复制仓库地址:
https://github.com/phprao/composer-test

cd /data/www 
mkdir -p my-packages/composer-test
cd my-packages/composer-test
git init 
git remote add origin https://github.com/phprao/composer-test.git
git pull origin master

composer init 

就可以看到生成的composer.json
做适当的编辑,比如:

{
    "name": "phprao/composer-test",
    "description": "composer-test",
    "license": "MIT",
    "require": {
        "php": ">=7.2"
    }
}

mkdir -p src/Interfaces

编写类 vi src/Interfaces/CalculatorServiceInterface.php

<?php

namespace Phprao\ComposerTest\Interfaces;


interface CalculatorServiceInterface
{
    public function add(int $a, int $b): int;
}

目录结构为:

.
|-- composer.json
|-- LICENSE
|-- README.md
`-- src
    `-- Interfaces
        `-- CalculatorServiceInterface.php

于是,需要修改composer.json设置autoload

{
    "name": "phprao/composer-test",
    "description": "composer-test",
    "license": "MIT",
    "require": {
        "php": ">=7.2"
    },
    "autoload": {
        "psr-4": {
            "Phprao\\ComposerTest\\": "src/"
        }
    }
}

提交代码到github仓库

git add ./
git commit -m 'init'
git push -u origin master

来到 https://packagist.org/ 注册并登录,或直接使用github账号登录。

点击submit提交自己的Package
需要输入的代码的线上托管地址,git, svn, github, gitee等,只要能拉取到你的代码就可以。
输入 https://github.com/phprao/composer-test
点击提交就可以了。

设置 Github Hook ,这样当github代码发生改动,会自动同步到Packagist,否则需要在 packagist.org 手动来更新。
参考文档:https://packagist.org/about#how-to-update-packages
有两种方式:
1、在packagist授权绑定github账号。
2、在github操作,授权连接packagist。

我选择第一种
进入个人中心 setting 授权绑定你的github账号。成功之后在 profile 中就能看到Hook信息。
在这里插入图片描述

然后进入github 的 composer-test 仓库,点击settings --> Webhooks 就看到多出一个webhook信息。至此,自动update也设置成功了。
在这里插入图片描述

测试一下,修改 CalculatorServiceInterface.php 文件并提交到github。

回到 packagist 进入 composer-test 包,在右下角可以看到自动更新提示
在这里插入图片描述

拉取

composer require phprao/composer-test
composer require phprao/composer-test=v1.0.1

报错
Error while installing phprao/composer-test, composer-plugin packages should have a class defined in their extra key to be usable

这是因为composer会去拉取最新的release版本,而我还没有给 composer-test 设置版本,去到github添加一个release和tag。
至此你就需要开始关注 composer-test 的版本问题了,你每次的push并不会自动整合到最新的版本里去,多次push之后可以考虑去到github创建一个版本,这样packagist中也会多出一个版本信息,composer require 就可以指定要拉取哪个版本的代码。

如果你不想打tag,那么就需要指定dev

composer require "phprao/composer-test @dev"

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值