我的博客 您现在的位置是:首页 > 我的博客

制作自己的composer安装包

来源:惠达浪原创 发布时间:2019-09-05 最后更新:2020-06-24 11439已围观

摘要我们经常在开发过程中,通过composer安装一些工具、依赖库等,可是如果这个依赖库是你自己开发的,将来也有可能用在其它项目里,也希望开源被其它小伙伴使用,是不是也想制作一个自己的安装包呢?

详细说明

Packagist是根据你仓库发行版本来管理依赖包的,它使用的是github提供的api接口,而码云完全按照git标准打造,这也是为什么码云也能用的原因。所以,第一步,你需要有一个github或者码云的仓库,通常这个仓库是公共(public)的,如果你不想公开这些依赖包或库,也是可以将其设置为私有(private),依赖包制作改成packagist.com,后缀不是org,改成了com。

有了仓库,还要在本地安装composer环境。虽然不安装也不影响制作,但是,既然你制作的是composer包,而你自己又没有安装composer,听起来是不是怪怪的?哪怕仅仅是为了测试呢,对吧。

生成composer.json

现在,我假设你的类库已经开发完毕了,比如文件夹里已经有了`src`,`test`之类的,现在就可以在根文件夹(相对你的项目)新建一个composer.json文件了,最少内容请参阅快速入门,这里推荐使用`composer init`来生成一个。

想要详细了解该文件内容的,可以参阅官方文档:composer.json架构

$ composer init


  Welcome to the Composer config generator


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

// 依赖包名称,前半部分是发行商名,后边是包名
Package name (/) [dell/demo]: dell/demo

// 包描述,简短说明依赖包的用途之类
Description []: 制作composer安装包演示

// 作者信息,回车使用默认。如果想输入非默认信息,注意格式为 name 。还有,中文不认!
Author [惠达浪 , n to skip]:

// 最小稳定过滤,可用的标识有:alpha、beta、dev、RC、stable
Minimum Stability []: stable

// 包类型,可用关键字:library, project, metapackage, composer-plugin
Package Type (e.g. library, project, metapackage, composer-plugin) []: library

// 你的许可协议,不明白的可以参阅我的另一篇文章《快速看懂开源协议》
License []: MIT

// 定义你的依赖(如果有的话),我这里示例的是依赖PHP
Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? y

// 输入搜索的包名(区分大小写)
Search for a package: php

// 输入依赖的版本(留空表示用最新版)
Enter the version constraint to require (or leave blank to use the latest version): >=5.6.0

// 又一个,直接回车退出
Search for a package:

// 是否定义开发版所需的额外依赖
Would you like to define your dev dependencies (require-dev) interactively [yes]? n

// 这里给出预览
{
    "name": "crazy/demo",
    "description": "制作composer安装包演示",
    "type": "library",
    "require": {
        "php": ">=5.6.0"
    },
    "license": "MIT",
    "authors": [
        {
            "name": "惠达浪",
            "email": "crazys@126.com"
        }
    ],
    "minimum-stability": "stable"
}

// 上边的预览看着顺眼吗?(确认生成吗)
Do you confirm generation [yes]? yes

// 要不要把vendor目录添加.gitignore里
Would you like the vendor directory added to your .gitignore [yes]? yes

// 要不要现在就把项目依赖安装上(选择yes,直接生成vendor目录并开始下载)
Would you like to install dependencies now [yes]? n

这里最重要的,就是第一步,如何给你的包起名字。按照官方的要求,这个名字是不能更改的,也不能与已经存在的包重名,未来也要避免冲突。所以建议起名之前,先去Packagist上搜索一下看看。

至此,你已经生成了composer.json,如果你要生成一个更复杂的情况,比如一个项目而不是一个库,你可能需要手工去修改这个文件。不过既然你的需求已经那么高了,相信你应该去花些时间学习更多的东西了,我这小知识已经不能满足你了。

好了,把你的项目,还有这个composer.json一块儿push到远程仓库去吧,以便包管理能够在网上抓到你的代码。

制作发行版

Packagist,官方解释是 The PHP package Repository,也就是一个PHP包仓库。嗯,实际上也的确如此,composer都是上这儿来取货的,这也是它为啥叫“指挥家”(composer的原意)而不是管理器。而且,人家composer简介中也说的很明白了:“Composer是PHP的一个依赖管理工具。”,“Composer不是一个包管理器。”

Packagist是啥?原话是:“Packagist is the default Composer package repository. It lets you find packages and lets Composer know where to get the code from. You can use Composer to manage your project or libraries' dependencies.”

翻译过来就是:“Packagist是Composer默认的包仓库,让你能找到依赖包,也让Composer知道从哪儿获取这些代码。所以你可以用Composer去管理你的项目和依赖。”

但是,Packagist虽然写着是仓库,可它不是云盘,它不可能帮你保存数据!Packagist不行,github行啊,码云也行啊!所以现在关系就明确了,Packagist实际上是去github上获取代码的,而且只要发行版的zip包,这点倒是很容易理解。整个过程看起来是这样的:

composer.png

所以,第二个任务,就是在你的github/码云上,生成发行版。生成过程在快速入门中解释的很清楚,这里不再重复。

添加依赖包

现在,你已经具备了所有的基本要素,可以向Packagist添加你的包了。如快速入门中所述,点击Submit,进入提交页面,在Repository URL下方的输入框中输入你github仓库的地址。

从图中可以看出,Packagist支持Git,Svn和Hg协议,但我没有另外两个,所以没法介绍了。添加好后,点击Check,Packagist会自动去你的仓库,检查根目录上的composer.json。现在明白为啥仓库要public的了吧,而且人家也有提醒,如果你非得要私用仓库,也不是不可以,只不过你得换个地儿玩了。

Trying to share private code?

Use Private Packagist to share code through Composer without publishing it for everyone on Packagist.org.

检测合格之后,点击Submit提交,安装包制作完成,会进入项目综合信息界面。

接下来,会有一些进阶的设置。

很赞哦! (475)


站点信息

  • 网站平台ThinkCMF 5.1.5
  • PHP版本:7.3.31
  • QQ交流群: 惠达浪技术交流