如何开发一个自己composer

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

由于最近一段时间在整理和重构老项目,所以把一些公共的功能进行了抽离,为了能后期更好的维护为何不直接写成一个可复用的compser依赖库,说干就干,下面是对本次经历的一个整理和总结。


提示:以下是本篇文章正文内容,下面案例可供参考

一、目的

  1. 公共的或复用性组件的抽离
  2. 统一管理维护,满足多项目的应用

二、方法

  1. Fork源依赖库
  2. 创建新的依赖库

三、开发

1.了解

composer.json代码如下(predis包):

{
    "name": "predis/predis",// 包名,它包括供应商名称和项目名称,必须。
    "type": "library",// 包的安装类型,默认为 library。library: 这是默认类型,它会简单的将文件复制到 vendor 目录。project: 这表示当前包是一个项目,而不是一个库。metapackage: 当一个空的包,包含依赖并且需要触发依赖的安装,这将不会对系统写入额外的文件。因此这种安装类型并不需要一个 dist 或 source。composer-plugin: 一个安装类型为 composer-plugin 的包,它有一个自定义安装类型,可以为其它包提供一个 installler。
    "description": "Flexible and feature-complete Redis client for PHP and HHVM",// 一个包的简短描述。通常这个最长只有一行,必须
    "keywords": ["nosql", "redis", "predis"],// 该包相关的关键词的数组。这些可用于搜索和过滤。
    "homepage": "http://github.com/predis/predis", // 主页
    "license": "MIT", // 包的许可协议,它可以是一个字符串或者字符串数组。对于闭源软件,你必须使用 "proprietary" 协议标识符。具体可以参考:https://spdx.org/licenses/
    "support": {  // 项目支持的向相关信息对象。
        "issues": "https://github.com/predis/predis/issues"  // 跟踪问题的 URL 地址。
    },
    "authors": [  // 作者
        {
            "name": "Daniele Alessandri",
            "email": "suppakilla@gmail.com",
            "homepage": "http://clorophilla.net",
            "role": "Creator & Maintainer"
        },
        {
            "name": "Till Krüss",
            "homepage": "https://till.im",
            "role": "Maintainer"
        }
    ],
    "funding": [ // 赞助
        {
            "type": "github",
            "url": "https://github.com/sponsors/tillkruss"
        }
    ],
    "require": {// 必须的软件包列表。
        "php": ">=5.3.9"
    },
    "require-dev": { // 为开发或测试等目的软件包列表
        "phpunit/phpunit": "~4.8"
    },
    "suggest": {  // 建议安装的包
        "ext-phpiredis": "Allows faster serialization and deserialization of the Redis protocol",
        "ext-curl": "Allows access to Webdis when paired with phpiredis"
    },
    "autoload": {
        "psr-4": {
            "Predis\\": "src/"
        }
    },
    "scripts": { // Composer 允许你在安装过程中的各个阶段挂接脚本。
        "post-update-cmd": "@php -f tests/apply-patches.php"
    }
}

2.实操

代码如下(示例):

PS C:\Data\Item\composer\ding> composer init

  Welcome to the Composer config generator



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

Package name (<vendor>/<name>) [avewo/ding]:
Description []: ave
Author [n to skip]: ave
Minimum Stability []: dev
Package Type (e.g. library, project, metapackage, composer-plugin) []: library
License []: Apache

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? yes
Search for a package: php
Enter the version constraint to require (or leave blank to use the latest version): >7.0
Search for a package:
Would you like to define your dev dependencies (require-dev) interactively [yes]? yes
Search for a package:
Add PSR-4 autoload mapping? Maps namespace "Avewo\Ding" to the entered relative path. [src/, n to skip]:

{
    "name": "avewo/ding",
    "description": "ave",
    "require": {
        "php": ">7.0"
    "license": "Apache",
    "autoload": {
        "psr-4": {
            "Avewo\\Ding\\": "src/"
        }
    },
    "authors": [
        {
            "name": "ave"
        }
    ],
    "minimum-stability": "dev"
}

Do you confirm generation [yes]? yes
Would you like to install dependencies now [yes]? yes
Loading composer repositories with package information
Updating dependencies
Nothing to modify in lock file
Writing lock file
Installing dependencies from lock file (including require-dev)
Nothing to install, update or remove
Generating autoload files
PSR-4 autoloading configured. Use "namespace Avewo\Ding;" in src/
Include the Composer autoloader with: require 'vendor/autoload.php';

minimum-stability (root-only)
这定义了通过稳定性过滤包的默认行为。默认为 stable(稳定)。因此如果你依赖于一个 dev(开发)包,你应该明确的进行定义。

对每个包的所有版本都会进行稳定性检查,而低于 minimum-stability 所设定的最低稳定性的版本,将在解决依赖关系时被忽略。对于个别包的特殊稳定性要求,可以在 require 或 require-dev 中设定(请参考 Package links)。

可用的稳定性标识(按字母排序):dev、alpha、beta、RC、stable。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值