创建自己的composer私有仓库

来源:赵克立博客 分类: PHP 标签:Composer发布时间:2018-12-31 15:06:56最后更新:2019-03-22 10:23:04浏览:1350
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2019-03-22 10:23:04
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

安装web服务

私有仓库的创建已经开发成啦一个项目,直接使用下面命令创建就可以

php create-project composer/satis --stability=dev --keep-vcs  --no-secure-http

过程有点慢,多等一会儿喽。

安装完成后,进入目录里创建一个 satis.json  里面是记录的一些仓库里有哪些包,和如果有人拉取这些包的时候要怎么去取

image.png

如下内容

{
    "name": "Test Repository",
    "homepage": "http://packages.zkeli.com",
    "repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/zhaokeli/ank-framework.git"
    }],
    "require":
    {
        "test/package1": "dev-master",
        "test/package1": "dev-master"
    },
    "require-all": false,
    "archive":
    {
        "directory": "dist",
        "format": "tar",
        "skip-dev": true
    }
}
  • name:仓库的名字,可以随便定义

  • homepage:仓库建立之后的的主页地址

  • repositories:指定去哪获取包,url中需要带.git

  • require:指定获取哪些包,如果想获取所有包,使用另一个配置项 require-all: true,指定这个可以加快索引速度,不用检索所有标签

  • archive: 指定把包缓存到本地,不用每次都去git clone,如果是开发时候用的话这个不要使用,不然取不到最新的

archive的配置项如下

  • directory 必须的,在输出目录中的包存放的目录(在output-dir中)

  • format 可选的,zip(默认)或者tar

  • prefix-url 可选的,下载链接的地址,默认是homepage(satis.json中的配置)加上directory

  • skip-dev 可选的,默认是false,当设置true时,不会下载分支的代码,只会下载tag的代码

  • absolute-directory 可选的,存放dist文件的本地绝对目录,而不是output-dir/directory

  • whitelist 可选的,如果设置为一些包名的列表,则只会下载这些包的文件

  • blacklist 可选的,如果设置为一些包名的列表,则不会下载这些包的文件

  • checksum 可选的,默认是true,设置为false时,satis不会检测dist文件的sha1 checksum



生成仓库列表

使用下面命令会生成一个public目录,里面有生成的所有包的信息,然后把这个目录设置到可以用域名访问的地方,比如  packagist.zhaokeli.com

php bin/satis build satis.json public/

也可以使用下面命令行生成指定包的信息

php bin/satis build satis.json public/ this/package that/other-package


使用方法

在自己项目中使用私有 composer 仓库前添加下面配置项

{
    "require":
    {
        "test/package1": "*"
    }
    "config":
    {
        "secure-http": false
    }
    "repositories":
    {
        "packagist":
        {
            "type": "composer",
            "url": "http://packagist.loc"
        }
    }
}

这样就可以使用自己的私有包啦,但还有个问题,如果自己的包依赖外网的其它一些第三方包的话在自己的私有镜像中又没有记录的就会出现 not found 的错误,解决方法也很简单,多加几个镜像让它按顺序找包,第一个镜像地址没有就到第二个去找,如下

"repositories":
{
    "0":
    {
        "type": "composer",
        "url": "http://packagist.loc"
    },
    "1":
    {
        "type": "composer",
        "url": "https://packages.example.com",
        "options":
        {
            "ssl":
            {
                "verify_peer": "true"
            }
        }
    },
    "packagist":
    {
        "type": "composer",
        "url": "https://packagist.phpcomposer.com"
    }
}

注意上面序号, packagist  是最后一个被使用的


微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python