Fork me on GitHub

composer利用satis创建私人仓库

composer安装

1
2
$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer

生成satis

1
$ composer create-project composer/satis --stability=dev --keep-vcs
  • 创建statis.json,配置如下:
1
2
3
4
5
6
7
8
9
10
{
"name": "My Repository",
"homepage": "http://packages.example.org",
"repositories": [
{ "type": "vcs", "url": "https://github.com/mycompany/privaterepo" },
{ "type": "vcs", "url": "http://svn.example.org/private/repo" },
{ "type": "vcs", "url": "https://github.com/mycompany/privaterepo2" }
],
"require-all": true
}
  • require-all:true表示全部的包,需要指定包的,需要更改为:
1
2
3
4
5
"require": {
"company/package": "*",
"company/package2": "*",
"company/package3": "2.0.0"

安装web端

1
$ php bin/satis build satis.json public/

satis.json就是配置的文件,public时生成的管理网站

部分更新

  • 单独的一个存储库的话
1
$ php bin/satis build --repository-url https://only.my/repo.git satis.json web/

使用私有源

  • 只需要在项目的 composer.json 文件的根上添加
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"repositories": [
{
"type": "composer",
"url": "http://satis仓库地址/"
}
],
"require": {
"company/package": "1.2.0",
"company/package2": "1.5.2",
"company/package3": "dev-master"
}
}
  • 然后执行composer update即可
    • 注意:源里面只有“仓库列表”,并没有真的同步代码仓库过来,所以下载还要走托管代码的机器,比如 GitHub,内部 GitLab 等。
  • 如果从 clone 速度太慢了,我们也可以缓存在我们的仓库中,在satis.json中增加:
1
2
3
4
5
6
7
8
{
"archive": {
"directory": "dist",
"format": "tar",
"prefix-url": "http://packages.dev.com/",
"skip-dev": true
}
}

*1. directory: 必需要的,表示生成的压缩包存放的目录,会在我们build时的目录中

  1. format: 压缩包格式, zip(默认) tar
  2. prefix-url: 下载链接的前缀的Url,默认会从homepage中取
  3. skip-dev: 默认为假,是否跳过开发分支
  4. absolute-directory: 绝对目录
  5. whitelist: 白名单,只下载哪些
  6. blacklist: 黑名单,不下载哪些
  7. checksum: 可选,是否验证sha1*
  • 然后重新再次生成就ok了:
1
$ php bin/satis build satis.json public/

会发现public目录多了一个dist目录,里面有很多tar的压缩包,这就是我们的package。 之后再执行composer update就会发现快了很多。

禹都一只猫,热爱IT,支持原创