Composer发布自己的插件包

Programming4年前 (2020)更新 bruce
425 0
内容纲要

通过Yii2 widget 结合Bootstrap4、Adminlte3,定制自己的开发扩展类库。可以通过packagist发布成composer安装包,对于项目解耦分离,但又可以快速安装复用。

Structure Extensions
composer扩展规范
版本扩展与发布源
发布composer平台 packagist.org

composer.json 文件描述

{
    "name": "brucebnu/yii2-widget-pack",      //包的名称
    "description": "about Yii2 widget with bootstrap4、adminlte3",   //包的功能描述
    "authors": [                                                    //作者信息
        {
            "name": "brucebnu",
            "email": "bruce.bnu@gmail.com",
            "homepage": "https://www.cebumaker.com"
        }
    ],
    "homepage":"https://github.com/brucebnu/yii2-widget-pack",         //包的源码地址
    "license": "MIT",                                               //遵循的协议
    "keywords": [                                                   //包的关键字
        "Yii2",
        "widget",
        "bootstrap4",
        "adminlte3",
        "php"
    ],

    "require": {                                                    //包的一些依赖
        "php": ">=7.3.7"
    },
    "autoload": {                                                   //自动加载
        "psr-4": {                                                  //自动使用的 psr-4 格式
            "pf\\arr\\": "src/"        // key命名空间,value本地代码路径
        }
    },
    "autoload-dev": {
        "psr-4": {
            "example\\": "example"
        }
    }
}

初始化自己的扩展包

# 创建自己的包结构目录
yii2-widget-pack
        |
        |-- src    包源码
        |    |-- build  功能代码 
        |    |-- PFarr.php  包的门面
        |
        |-- example  一些实例
        |
        |-- README.md
        |
        |-- composer.json 下面生成

成自己的composer.json

包根目录,

composer init

输入你想要生成的包名, /,brucebnu/yii2-widget-pack
输入你的包的描述,about Yii2 widget with bootstrap4、adminlte3
输入作者,brucebnu
"minimum-stability": "stable", // dev-master
ackage Type (e.g. library, project, metapackage, composer-plugin) []: composer-plugin
License: MIT
是否有依赖
ould you like to define your dependencies (require) interactively [yes]? no

修改composer.json 文件

  1. Authors

    "authors": [
        {
            "name": "Bruce Bnu",
            "email": "bruce.bnu@gmail.com",
            "homepage": "https://www.cebumaker.com/"
        }
    ],
  2. autoload
    composer包的自动加载,是一个github项目,类命名空间指向当前目录

    "autoload": {
        "psr-4": {
            "brucebnu\\affix\\": "src" // key是源码中的命名空间,value是源码目录
        }
    }

    项目开发调试包文件,

  3. 在开发目录创建一个软连接,指向上面github的composer包文件
    下面在开发调试项目中,开发自动加载这个包文件,进行开发调试

    "autoload-dev": {
    "psr-4": {
      "tests\\": "tests/",
     "bnu\\widgets\\": "brucebnu/yii2-widget-pack/src" // 命名空间对应本地软连接路径
    }
    },

    最后两边别忘记执行,composer dump,更新map文件,用于自动加载

  4. 在配置文件添加一个别名

    
    <?php
    return [
    
    'components' => [
    ],
    'aliases' => [
        'bnu/widgets' => '@backend/common/widget-pack/src',
    ],

];


以上两种手动添加扩展的方式,目的把抽象扩展、类库与开发项目解耦分离,但又可以关联开发调试。
可以举一反三,如果我们再 GitHub 上看到一个扩展不能用 composer 下载下来怎么办?其实我们可以自己定义一个 vendor 目录,然后给扩展配置一个路径别名就是可以用的。

## 发布原理
-- 代码提交到github上,获得一个项目url地址,Git基本提交操作;
-- [https://packagist.org/](https://packagist.org/ "https://packagist.org/"),使用github登录,复制packagist的show API Token
-- 来到github的项目首页,选择项目settings,左侧选择integrations & services,Add Services,搜索Packagist,按照要求填写上面packagist的show API Token
-- 回到packagist,填写github的项目地址,submit packagist

## Composer require vender/name 安装测试
遇到:Your requirements could not be resolved to an installable set of packages
composer install --ignore-platform-reqs 或者 composer update --ignore-platform-reqs
忽略安装版本
© 版权声明

相关文章

暂无评论

暂无评论...