101- composer [packagist]包制作(入门篇)

创建包 把我们写好的模块分享给其他开发者使用

你可以创建一个新项目来使用composer。我们建一个输出hello world的类 。把我们的包来分享给其他开发者使用,就像predis/predis。`composer通常以“vendor/package” (厂商/包名)的方式来命名。这里我们为项目命名”scort/hello-world-sdk”。

前言:

  1. 本文helloWorld为例进行讲解!
  2. packagist帐号一个, 没有有话点击这里 packagist 自行注册
  3. githubgitee帐号一个, 没有有话点击这里 githubgitee 自行注册

教程的使用环境:

  1. ubuntu16.04 x64 LTS
  2. git 工具 (git version 2.7.4)
  3. composer 工具(Composer version @package_branch_alias_version@ (1.0.0-beta2) 2016-03-27 16:00:34)

参考:
Packagist / Composer 中国全量镜像 库(资源包)
Packagist / Composer 中国全量镜像
packagist Submit 地址
packagist 首页 地址
gitee 首页 地址


本教程共4步:

第一步: 在git上创建项目、初始化composer.json
第二步 创建类文件、实现功能;修改并使用composer安装
第三步 git提交,并发布到packagist
第四步 使用我们的packagist


第一步: 在git上创建项目、初始化composer.json

  1. git上创建项目(这里以gitee为例)

    gitee上创建项目

  2. 复制项目地址,进行本地clone

    复制项目地址

    选择项目地址,本地clone

~$ cd ~

~$ git clone https://gitee.com/469306621/hello-world.git
    正克隆到 'hello-world'...
    remote: Counting objects: 3, done.
    remote: Total 3 (delta 0), reused 0 (delta 0)
    展开对象中: 100% (3/3), 完成.
    检查连接... 完成。

  1. 初始化composer.json
~$ cd hello-world
~$ composer init
                                            
  Welcome to the Composer config generator  
                                            

This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>) [root/hello-world]: scort/hello-world-sdk 
Description []: hellow-world-sdk
Author [469306621 <469306621@qq.com>, n to skip]: 
Minimum Stability []: stable
Package Type []: library
License []: MIT

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? n
Would you like to define your dev dependencies (require-dev) interactively [yes]? n

{
    "name": "scort/hello-world-sdk",
    "description": "hellow-world-sdk",
    "type": "library",
    "license": "MIT",
    "authors": [
        {
            "name": "469306621",
            "email": "469306621@qq.com"
        }
    ],
    "minimum-stability": "stable",
    "require": {}
}

Do you confirm generation [yes]? 
Would you like the vendor directory added to your .gitignore [yes]? 

初始完后的目录是这样的:

~/hello-world$ ll
总用量 24
drwxrwxr-x  3 scort scort 4096 3月  11 11:09 ./
drwxr-xr-x 55 scort scort 4096 3月  11 11:02 ../
-rw-rw-r--  1 scort scort  295 3月  11 11:09 composer.json
drwxrwxr-x  8 scort scort 4096 3月  11 11:02 .git/
-rw-rw-r--  1 scort scort    9 3月  11 11:09 .gitignore
-rw-rw-r--  1 scort scort   26 3月  11 11:02 README.md

第二步 创建类文件、实现功能;修改并使用composer安装

  1. 创建类文件src/HelloWorld.php,进行功能的具体实现

    创建类文件 src/HelloWorld.php

  2. src/HelloWorld.php文件内容:

<?php
/**
 * Created by PhpStorm.
 * User: scort
 * Date: 18-3-11
 * Time: 上午11:16
 */

namespace HelloWorld;

class HelloWorld
{
    // 作者
    protected $author;

    /**
     * HelloWorld constructor.
     * @param string $author
     */
    public function __construct($author = 'scort')
    {
        $this->author = $author;
    }

    /**
     * 执行方法
     * @return string
     */
    public function info()
    {
        $info = "Hello World ! \n";
        $info .= "\t--Power By ";
        $info .= $this->author . "\n";
        return $info;
    }
}
  1. composer.json文件中增加:
    "require": {
        "php" : ">=5.6"
    },
    "autoload": {
        "psr-4": {
            "HelloWorld\\" : "src/"
        }
    }
  1. composer 安装
~/hello-world$ composer install

第三步 git提交,并发布到packagist

提交前将无用的文件排除,在.gitignore文件中加入:

.idea/
/vendor/
composer.lock
  1. git 提交
~/hello-world$ git add .
~/hello-world$ git commit -m 'helloWorld'
~/hello-world$ git tag 1.0.0
~/hello-world$ git push origin master --tag
  1. git地址添加到packagist中(packagist submit 地址),增加自己的包:
    image.png

    如上图,将你的git地址填入Repostory Url中,然后点击Check;
    image.png

    点击Submit进行提交!
    image.png

    到这里你的包就提交完成了,等待5分钟左右你的包就可以在packagist上面搜索到。但目前你的包还不会自动更新!

接下来配置自动更新:

  • 首先你要拿到你的API Token(如图, 点击show API Token就会看到):
    image.png
  • 然后到你的gitee项目(hello-world项目->管理->WebHooks)下配置:
    2018-03-11 11-47-17屏幕截图.png

这里:
URLhttps://packagist.org/api/update-package?username=469306621&apiToken=API_TOKEN(其中469306621是我的帐号,API_TOKEN要改为你的API TOKEN值)更多URL填写帮助
密码:自定义
提交后就完成了自动更新了!


第四步 使用我们的packagist

  • 在另一个项目中使用我们刚刚创建的scort/hello-world-sdk
~$ cd ~
~$ mkdir dev-test
~$ cd dev-test/
~/dev-test$ composer init
[一直回车]
  • 安装,加载scort/hello-world-sdk
~/dev-test$ composer install
~/dev-test$ composer require scort/hello-world-sdk

    Using version ^1.0 for scort/hello-world-sdk
    ./composer.json has been updated
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
      - Installing scort/hello-world-sdk (1.0.0)
        Cloning 7605cef5ade7f84a3e55289a879e4cf97838eaec

    Writing lock file
    Generating autoload files
  • 使用,在项目的根目录下创建一个index.php文件,在这个文件中使用我的scort/hellow-word-sdk包。
~/dev-test$ touch index.php # 创建index.php文件,这里是ubuntu,我使用的是命令创建一个文件,你可以用的最擅长的方式创建文件。
  • 创建完文件后项目的目录应该是如下图:
项目目录
  • index.php内容:
<?php

require "vendor/autoload.php";

use HelloWorld\HelloWorld;

$h = new HelloWorld('霄峰');

echo $h->info();
  • 执行,结果:
~/dev-test$ php index.php 

Hello World ! 
    --Power By 霄峰

到这里就整个包的创建、使用就完成了,如果我的文章对你有帮助的话,请传播到你的身边的人,谢谢!!!

推荐阅读更多精彩内容