An open API service indexing awesome lists of open source software.

https://github.com/owenliang/composer-private-repository

composer私有仓库建设
https://github.com/owenliang/composer-private-repository

composer private-repository

Last synced: 3 months ago
JSON representation

composer私有仓库建设

Awesome Lists containing this project

README

          

# composer私有仓库建设

## 背景

* 新建项目没有规范,随手拷贝已有项目已成"乱象"
* 已有项目对框架侵入严重,每个项目的框架代码都不相同
* 基于复制粘贴复制公共库,代码不一致,无法统一升级更新,效率低下

## 目标

* 统一项目脚手架:命令一键创建新项目
* 统一基础公共库:命令一键安装与更新依赖

## 路线图

* composer satis + gitlab 私有仓库搭建
* composer工具培训
* 脚手架接入composer仓库
* 图片处理、link处理等常见痛点封装为公共库,接入composer仓库

## 架构

基于composer+gitlab搭建整套架构,其中composer类似于java maven、python pip、nodejs npm,是一款可靠的php包管理工具。

```
composer cli <--- packagist.baidu.com <--- gitlab-team.baidu.com
```

* 客户端:composer完成依赖配置、安装、更新
* 私有仓库:composer satis搭建,仅维护私有包的索引信息
* 代码托管:gitlab,存储库代码,维护分支与tag

## composer安装与使用

### 安装

```
curl -sS https://getcomposer.org/installer | php

mv composer.phar /usr/local/bin/composer
```

安装成功后,可以直接使用composer命令。

使用Windows的同学可以通过Phpstorm直接安装与管理composer。

### 创建项目

执行composer init来初始化一个空白项目,也称为"root项目"。

```
composer init

Welcome to the Composer config generator

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

Package name (/) [owenliang/myproject]:
```

根据提示填入各种信息即可,最终会生成composer.json配置文件。

生成后的composer.json文件如下:

```
{
"name": "owenliang/myproject",
"authors": [
{
"name": "owenliang",
"email": "120848369@qq.com"
}
],
"require": {}
}
```

### 安装外部依赖

作为root项目,通常只关心自己依赖哪些包、包的版本是什么。

默认composer只会在[官方仓库](https://packagist.org/)中寻找你要安装的包,例如安装一个elasticsearch的客户端:

```
composer require 'ongr/elasticsearch-dsl:^5.0'
```

包的命名遵循:"组织名/包名",是全局唯一的,冒号之后是版本控制,具体规则后面会提供学习链接。

安装这样的第三方包不需要做额外的配置,composer工具总是会到官方仓库中寻找你要安装的包。

现在composer.json如下:

```
{
"name": "owenliang/myproject",
"authors": [
{
"name": "owenliang",
"email": "120848369@qq.com"
}
],
"require": {
"ongr/elasticsearch-dsl": "^5.0"
}
}
```

### 安装内部依赖

安装私有仓库的包略有不同,首先需要配置composer私有库的地址,编辑上述composer.json:

```
{
"name": "owenliang/myproject",
"authors": [
{
"name": "owenliang",
"email": "120848369@qq.com"
}
],
"require": {
"ongr/elasticsearch-dsl": "^5.0"
},
"repositories": [{
"type": "composer",
"url": "http://packagist.baidu.com"
}],
"config": {
"secure-http": false
}
}
```

现在尝试安装一个私有的包:

```
composer require 'baidu/common:^1.0'
```

composer工具会到[私有仓库](http://packagist.baidu.com)查找这个包,如果没找到还会去默认的官方仓库查找。

未来可以移除secure-http选项,因为最终私有仓库域名会改为https协议。

### 常用命令

* 初始化composer.json:

```
composer init
```

* 安装依赖

```
composer require "组织名/库名:版本控制"
```

* 删除依赖

```
composer remove "组织名/库名"
```

* 升级依赖(先修改composer.json中的依赖配置)

```
composer update
```

* 清空缓存

```
composer clearcache
```

### 引入composer自动加载

composer安装的包文件存储在vendor目录。

为了在自己的项目中使用安装的依赖库,需要加载composer的autoload函数,这样才能访问到包中的类和方法:

```