MENU

Composer 基础使用

November 5, 2021 • Read: 1602 • PHP,编码

基础命令

创建项目

composer create-project [包名] [目录] [版本号]

可以使用 Composer 从现有的包中创建一个新的项目,相当于 git clone 后同时安装这个包的依赖。

注意:这里是使用 Composer 包创建了一个项目,而不是引入了一个 Composer 包。

Laravel ThinkPHP 新建项目就是使用的这个。

此命令的用途如下:

  • 可以快速部署你的应用
  • 可以检出任何资源包,并开发它的补丁
  • 多人开发项目,可以用它来加快应用初始化

参数说明

  • 包名:要安装的项目包是什么,例如 topthink/thinklaravel/laravel
  • 目录:项目文件夹,当文件夹不存在时会自动创建
  • 版本号:如果不指定,则安装最新版本
  • --prefer-dist :会从 github 上下载.zip压缩包,不保留 .git 文件夹,适合基于 package 开发,速度会更快。
  • –prefer-source:会直接 clone github 上的源代码,保留 .git 文件夹,如果 github 代码更新 可以通过 git pull 同步更新本地代码
  • --no-install : 禁止安装包依赖
  • --no-scripts : 禁止在跟资源包中定义脚本执行
  • --no-plugins 禁用 plugins

例子:

# 安装 thinkphp 最新的发行版 到 tp 目录
composer create-project topthink/think tp
# 安装 thinkphp 6.0.* 开发板到 tp 目录
composer create-project topthink/think tp 6.0.*
# 安装 thinkphp 5.1.* 发行版到 tp 目录
composer create-project topthink/think tp 5.1.*

# 安装 laravel 最新的发行版 到 blog 目录
composer create-project --prefer-dist laravel/laravel blog
# 安装 laravel 6.x 版本到 到 blog 目录
composer create-project --prefer-dist laravel/laravel blog "6.*"

更新包

composer update [包名1] [包名2] [包名..]

参数说明

  • 包名:

    • 需要更新的包,多个包名使用空格分隔
    • 也可以使用通配符来更新:update vendor/*
    • 如果不指定更新的包名则更新所有包

选项

  • --no-progress: 不显示进度信息
  • --no-scripts:跳过 composer.json 中的脚本。

注意:update 只是小版本的更新,用 ThinkPHP 举例,5.0.22 可以更新到 5.0.24,不会自动更新到 5.1.x。

如果需要跨版本更新包,则需要在 composer.json 文件中先修改到目标的版本号,然后执行包更新。

# 升级 tp 框架核心部分到最新版
composer update topthink/framework

安装包

composer install

install 命令从当前目录读取 composer.json 文件,处理了依赖关系,并把其安装到 vendor 目录下。

如果当前目录存在 composer.lock 文件,则会从此文件获取依赖版本,而不是 composer.json

如果没有 composer.lock 文件,则会在处理完依赖关系后创建它。

声明依赖

composer require [包名][:包版本]

新增依赖包到 composer.json 文件中。

参数说明

  • 包名:需要添加的包,可以空格隔开多个包同时安装
  • 包版本:指定安装包的版本,紧跟包名 ":" 分隔。

例子:

# 安装 dcat-admin 2.x 版本到项目
composer require dcat/laravel-admin:"2.*" 

# 安装 dcat-admin 2.x 和 horizon 到项目
composer require laravel/horizon dcat/laravel-admin:"2.*"

全局执行

php composer.phar global [命令]

全局执行 composer 命令,需要将 $COMPOSER_HOME/vendor/bin 加入到 $PATH 命令。

参数说明

  • 命令:可选的命令 install 、require、update

例子:

# 全局更新包
composer global update

# 全局安装包
composer global require fabpot/php-cs-fixer:dev-master

搜索包

composer search [包名]

参数:

  • –only-name 表示只输出包名

查看已安装包

composer show [包名] [包版本]

显示所有可用包,也可以用于查看一个包的详细信息

参数说明

  • 包名:可选,不带包名则查看所有已安装包,带包名则显示包的详细信息
  • 包版本:用于输出包指定版本的详细信息

选项:

  • --installed (-i) 列出已安装的依赖包
  • --platform (-p) 仅列出平台软件包
  • --self (-s) 仅列出当前项目信息

例子:

composer show thans/tp-jwt-auth
name     : thans/tp-jwt-auth
descrip. : thinkphp  jwt auth composer
keywords :
versions : * v1.1.3
type     : library
license  : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText
homepage :
source   : [git] https://github.com/QThans/jwt-auth.git 9d7919c591e8c288320ccac1e9df8ae3b8a71c38
dist     : [zip] https://api.github.com/repos/QThans/jwt-auth/zipball/9d7919c591e8c288320ccac1e9df8ae3b8a71c38 9d7919c591e8c288320ccac1e9df8ae3b8a71c38
path     : [项目目录]\vendor\thans\tp-jwt-auth
names    : thans/tp-jwt-auth

support
issues : https://github.com/QThans/jwt-auth/issues
source : https://github.com/QThans/jwt-auth/tree/v1.1.3

依赖检测

composer depends --link-type=require [包名]

用于检测项目中的某个包是否被其他包所依赖,并且列出它们。

选项

  • --link-type 默认为 require ,也可以是 require-dev

有效性检测

composer validate

用于检测项目中的 composer.json 是否有效

选项

  • --no-check-all Composer 是否进行完整检测

依赖包状态检测

composer status

如果经常修改依赖包中的代码,并且他们是使用自定义源进行安装的,那么 status 命令允许你进行检查,如果本地有任何的更改,它都将会提示。

参数说明

  • -v 可以使用 --verbose 系列的参数,来获取更加详细的信息

更新 Composer

composer self-update [版本]

将 Composer 自身升级为最新版本,执行后会将 composre.phar 自动替换到最新版本。

参数说明

  • 版本:可选,如果不传则升级为最新版
  • --rollback (-r) 回滚到已经安装的最后一个版本
  • -clean-backups 在升级过程中删掉旧的备份。

更改配置

config [options] [setting-key] [setting-value1] ... [setting-valueN]

Config 命令允许修改 Composer 的一些基础配置,无论是本地的 composer.json 还是全局的 config.json 文件。

参数

  • setting-key 配置项的名称
  • setting-value1 配置项的值

选项

  • --global (-g) 表示操作的是全局 Composer 配置文件,如果不指定则修改当前项目的 Composer.json
  • --editor (-e) 用文本编辑器打开 composer.json 文件
  • --unset 移除 setting-key 指定的配置选项
  • --list (-l) 显示当前配置选项的列表。
  • --file="..." (-f) 在一个指定的文件上操作而不是 composer.json 注意,该选项与 `--global 不能一起使用。

修改包来源

composer config repositories.foo vcs http://github.com/foo/bar

全局命令

  • --verbose (-v): 增加反馈信息的详细度。

    • -v 表示正常输出。
    • -vv 表示更详细的输出。
    • -vvv 则是为了 debug。
  • --help (-h): 显示帮助信息。
  • --quiet (-q): 禁止输出任何信息。
  • --no-interaction (-n): 不要询问任何交互问题。
  • --working-dir (-d): 如果指定的话,使用给定的目录作为工作目录。
  • --profile: 显示时间和内存使用信息。
  • --ansi: 强制 ANSI 输出。
  • --no-ansi: 关闭 ANSI 输出。
  • --version (-V): 显示当前应用程序的版本信息。

其他问题

PHP 多版本

很多时候 会安装多个php版本,composer 默认使用的是环境变量中的php版本,但这样会导致部分项目需要低版本的 php支持,但安装的 composer 只支持高版本,这个时候可以使用 指定php版本的方案解决:

  • 在项目目录 放置 composer.phar文件(注意不是 php.exe 目录)
  • 在项目目录执行:[指定版本的php] composer.phar install 方式执行 composer 命令

笔记内容来自 Composer 官方文档