Composer - PHP依赖管理

Composer是 PHP 用来管理依赖的工具,提供了科学的第三方包的模块化及更新方案。php

运行原理

  1. composer.json声明项目依赖
  2. composer工具前往packagist.org仓库获取包的元数据信息
  3. composer工具根据元数据信息前往GitHub等代码托管平台获取第三方包

安装Composer

版本要求 PHP 5.3.2+git

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer  # 下载composer

composer config -g repo.packagist composer https://packagist.phpcomposer.com  # 全局配置composer源为中国镜像源

composer global require "hirak/prestissimo:^0.3"  # 全局安装 ”composer并行下载插件“

export PATH=$PATH:~/.composer/vendor/bin  # 全局composer库执行路径加入环境变量

sudo chmod a+x /usr/local/bin/composer  # 增长可执行权限

#### 平常升级composer ####
composer selfupdate

基本使用

新起Composer项目

  1. 常规启动
    composer init -n 当前目录建立空的composer.json文件
  2. 带依赖启动
    composer init --require=包名 -n

克隆一个包

composer create-project 包名 保存路径 版本号

声明依赖

  1. 命令描述
    composer require [--dev] 包名
  2. 配置文件描述
    编辑 composer.json

卸载依赖

composer remove 包名json

自动加载

应用启动入口增长 require 'vendor/autoload.php';安全

安装依赖

composer install --profile --prefer-dist --optimize-autoloader
  • --profile 显示时间和内存使用信息
  • --optimize-autoloader 优化自动加载得到20%~25%提高
  • --prefer-dist 大幅加快下载速度 ,忽略包下的.git目录从而回避对根目录git系统的影响

更新依赖

  1. 只更新指定包
    composer update 包名 --prefer-dist
  2. 只刷新composer.lock,不更新依赖
    • 通用处理:composer update nothing
    • 新版处理:composer update --lock

版本锁定

  • composer.lock来管理
  • 项目代码须要版本锁定
  • 库代码不该该版本锁定

生产环境部署优化

  • 优化自动加载
  • composer dump-autoload --optimize

经常使用命令

composer show --installed # 已安装的依赖 composer show -p # 已安装的平台软件包(包括php拓展)bash

注意

  • composer在vendor目录下安装的子项目有其自身的git版本控制系统
  • 项目根下的git不对这些子项目进行管理
  • 若有管理需求则须要删除子项目的.git目录

非官方Repo引入方式

1. git版本库
{
    "type":"git",
    "url":"ssh://....git"
}

2. path本地路径
{
    "type":"path",
    "url":"包的相对路径"
}

自动加载

  • 文件
{
		 "autoload": {
			 "files": [
				 "文件路径",
			 ]
		 }
	}

源类型

  • composer
{
		"type": "composer",
		"url": "https://packagist.phpcomposer.com"
	}
  • git
{
		"type": "git",
		"url":  "git地址"
	}
  • path
{
		"type": "path",
		"url": "包的相对目录路径"
	}

语义话版本号

组成

  • Major.Minor.Patch
  • Major 大版本更新,不向后兼容
  • Minor小版本更新,向后兼容
  • Patch补丁修复,向后兼容

示例

  • 确切版本号 1.0.0
  • 范围版本号 >=1.0.0
  • 通配符版本号 1.0.*
  • 向后兼容的最小版本(下一个重要版本)~
    • ~1.0 => 1.0<= X < 2.0
    • ~1.0.0 => 1.0.0<= X < 1.1
  • 大版本前的全部版本(下一个安全版本)^
    • ^1.0 => 1.0<= X < 2.0
    • ^1.0.0 => 1.0.0<= X < 2.0.0

建立Composer

流程

  1. 建立包目录
  2. composer init初始化配置
  3. 实现包逻辑
  4. 第三方代码托管平台推送项目,并配置同步更新到packagist.org
  5. packagist.org提交项目地址
相关文章
相关标签/搜索