美文网首页全栈工程师通往架构师之路程序员
101- composer [packagist]包制作(入门篇

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

作者: 霄峰 | 来源:发表于2018-03-11 14:57 被阅读40次

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

    你可以创建一个新项目来使用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 霄峰
    

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

    相关文章

      网友评论

        本文标题:101- composer [packagist]包制作(入门篇

        本文链接:https://www.haomeiwen.com/subject/mzwifftx.html