composer 基本概念与常用命令总结
composer 基本概念与常用命令总结
基本概念
本文的内容是总结过往学习composer的一些心得,主要包括composer的基本概念与常用命令。本质上,composer是一个php依赖管理的软件,主要用来管理php的外部依赖并处理外部依赖之间的依赖关系。其实为了避免重复造轮子,很多编程语言都有自己的依赖管理工具,比如Java的maven,Python的pip和node的npm等等。熟练掌握composer,开发项目可以事半功倍。
软件安装
主要参考Laravel的composer中国全量镜像下载说明,Linux直接打开终端执行以下命令。Windows环境建议使用git-bash执行命令。
linux/mac安装
wget https://dl.laravel-china.org/composer.phar -O /usr/local/bin/composer
chmod a+x /usr/local/bin/composer
如遇权限不足,可添加 sudo
windows
- 直接下载 composer.phar,地址:https://dl.laravel-china.org/composer.phar
- 把下载的 composer.phar 放到 PHP 安装目录
- 新建 composer.bat, 添加如下内容,并保存:
@php "%~dp0composer.phar" %*
最后可以通过composer --version
查看是否有正确的输出,可以通过composer selfupdate
进行软件更新。
配置镜像
鉴于国外镜像源的连接质量比较差,所以有必要将镜像源设置到国内。推荐使用Laravel提供的Composer 中国全量镜像。此外还有Packagist/Composer中国全量镜像
如何使用
请尽可能用比较新的 Composer 版本。
使用 Composer 镜像加速有两种选项:
- 选项一:全局配置,这样所有项目都能惠及(推荐);
- 选项二:单独项目配置;
选项一、全局配置(推荐)
$ composer config -g repo.packagist composer https://packagist.laravel-china.org
选项二、单独使用
$ composer config repo.packagist composer https://packagist.laravel-china.org
取消镜像
composer config -g --unset repos.packagist
常用命令
内容主要参考官方中文的cli终端命令文档
全局参数
下列参数可与每一个命令结合使用:
--verbose (-v): 增加反馈信息的详细度。
-v 表示正常输出。
-vv 表示更详细的输出。
-vvv 则是为了 debug。
--help (-h): 显示帮助信息。
--quiet (-q): 禁止输出任何信息。
--no-interaction (-n): 不要询问任何交互问题。
--working-dir (-d): 如果指定的话,使用给定的目录作为工作目录。
--profile: 显示时间和内存使用信息。
--ansi: 强制 ANSI 输出。
--no-ansi: 关闭 ANSI 输出。
--version (-V): 显示当前应用程序的版本信息。
初始化 init
您运行该命令,它会以交互方式要求您填写一些信息,同时聪明的使用一些默认值。
composer init
初始化参数
--name: 包的名称。
--description: 包的描述。
--author: 包的作者。
--homepage: 包的主页。
--require: 需要依赖的其它包,必须要有一个版本约束。并且应该遵循 foo/bar:1.0.0 这样的格式。
--require-dev: 开发版的依赖包,内容格式与 --require 相同。
--stability (-s): minimum-stability 字段的值。
依赖安装 install
从composer.json中读取依赖版本。并把其安装到 vendor 目录下。
composer install
如果当前目录下存在 composer.lock 文件,它会从此文件读取依赖版本,而不是根据 composer.json 文件去获取依赖。这确保了该库的每个使用者都能得到相同的依赖版本。
如果没有 composer.lock 文件,composer 将在处理完依赖关系后创建它。
安装-参数
--prefer-source: 下载包的方式有两种: source 和 dist。对于稳定版本 composer 将默认使用 dist 方式。而 source 表示版本控制源 。如果 --prefer-source 是被启用的,composer 将从 source 安装(如果有的话)。如果想要使用一个 bugfix 到你的项目,这是非常有用的。并且可以直接从本地的版本库直接获取依赖关系。
--prefer-dist: 与 --prefer-source 相反,composer 将尽可能的从 dist 获取,这将大幅度的加快在 build servers 上的安装。这也是一个回避 git 问题的途径,如果你不清楚如何正确的设置。
--dry-run: 如果你只是想演示而并非实际安装一个包,你可以运行 --dry-run 命令,它将模拟安装并显示将会发生什么。
--dev: 安装 require-dev 字段中列出的包(这是一个默认值)。
--no-dev: 跳过 require-dev 字段中列出的包。
--no-scripts: 跳过 composer.json 文件中定义的脚本。
--no-plugins: 关闭 plugins。
--no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
--optimize-autoloader (-o): 转换 PSR-0/4 autoloading 到 classmap 可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。
依赖更新 update
为了获取依赖的最新版本,并且升级 composer.lock 文件,你应该使用 update 命令。
composer update
这将解决项目的所有依赖,并将确切的版本号写入 composer.lock。
如果你只是想更新几个包,你可以像这样分别列出它们:
composer update vendor/package vendor/package2
你还可以使用通配符进行批量更新:
composer update vendor/*
更新-参数
--prefer-source: 当有可用的包时,从 source 安装。
--prefer-dist: 当有可用的包时,从 dist 安装。
--dry-run: 模拟命令,并没有做实际的操作。
--dev: 安装 require-dev 字段中列出的包(这是一个默认值)。
--no-dev: 跳过 require-dev 字段中列出的包。
--no-scripts: 跳过 composer.json 文件中定义的脚本。
--no-plugins: 关闭 plugins。
--no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
--optimize-autoloader (-o): 转换 PSR-0/4 autoloading 到 classmap 可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。
--lock: 仅更新 lock 文件的 hash,取消有关 lock 文件过时的警告。
--with-dependencies 同时更新白名单内包的依赖关系,这将进行递归更新。
申明依赖 require
require 命令增加新的依赖包到当前目录的 composer.json 文件中
composer require
在添加或改变依赖时, 修改后的依赖关系将被安装或者更新。
如果你不希望通过交互来指定依赖包,你可以在这条令中直接指明依赖包。
composer require vendor/package:2.* vendor/package2:dev-master
参数
--prefer-source: 当有可用的包时,从 source 安装。
--prefer-dist: 当有可用的包时,从 dist 安装。
--dev: 安装 require-dev 字段中列出的包。
--no-update: 禁用依赖关系的自动更新。
--no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
--update-with-dependencies 一并更新新装包的依赖。
自我更新 self-update
展示依赖 show
--installed (-i)
: 列出已安装的依赖包。--platform (-p)
: 仅列出平台软件包(PHP 与它的扩展)。--self (-s)
: 仅列出当前项目信息。
配置 config
config [options] [setting-key] [setting-value1] ... [setting-valueN]
setting-key 是一个配置选项的名称,setting-value1 是一个配置的值。可以使用数组作为配置的值(像 github-protocols),多个 setting-value 是允许的。
参数
--global (-g): 操作位于 $COMPOSER_HOME/config.json 的全局配置文件。如果不指定该参数,此命令将影响当前项目的 composer.json 文件,或 --file 参数所指向的文件。
--editor (-e): 使用文本编辑器打开 composer.json 文件。默认情况下始终是打开当前项目的文件。当存在 --global 参数时,将会打开全局 composer.json 文件。
--unset: 移除由 setting-key 指定名称的配置选项。
--list (-l): 显示当前配置选项的列表。当存在 --global 参数时,将会显示全局配置选项的列表。
--file="..." (-f): 在一个指定的文件上操作,而不是 composer.json。注意:不能与 --global 参数一起使用。
更详细的命令请参考官方中文文档
注意问题
- 已存在
composer.lock
文件,先删除,再运行composer install
重新生成。 - 一般用
-vvv
来进行调试,以便查看下载状态 - 如果PHP版本与composr版本不一致,可以使用
--ignore-platform-reqs
忽略其冲突 - 如果再Linux中使用root执行composer,会发出警告
Composer install Do not run Composer as root/super user!
。可以使用一般用户来执行(推荐),或者忽略该警告。 - 如果Linux中无法写入composer缓存,可以重新设置目录权限。
composer 基本概念与常用命令总结的更多相关文章
- Linux的几个概念,常用命令学习
Linux的几个概念,常用命令学习---------------------------------设备名装载点// 通过装载点访问设备-------------------------------- ...
- Git 基本概念及常用命令
一.基本概念 文件的三种状态:(任何一个文件在git中都有以下三种状态) 1) 已提交(committed):表示该文件已经被安全地保存在本地数据库中了. 2) 已修改(modified):表示修改了 ...
- Git的概念及常用命令
一.概念 Git是一个分布式的版本控制工具,区别于集中式管理的SVN. 二.优势 每个开发者都拥有自己的本地版本库,可以在本地任意修改代码.创建分支,不会影响到其他开发者的使用: 所有版本信息均保存在 ...
- Hive的基本概念和常用命令
原文链接: https://www.toutiao.com/i6766571623727235595/?group_id=6766571623727235595 一.概念: 1.结构化和非结构化数据 ...
- Maven笔记之核心概念及常用命令
Maven的核心概念 Maven是一款服务于java平台的自动化构建工具. 自动化构建工具还有:make->ant->maven->gradle 1.约定的目录 2.P ...
- (一)maven基本配置,概念,常用命令
---恢复内容开始--- 首先明白maven是什么, maven是一个自动化构建工具,可以将你一个项目的html,java,css,js等代码构建成一个可发布的产品,相当于就是将你从写完代码到部署完成 ...
- DDL DML概念 --- Msysql常用命令
一.DML DML(data manipulation language)数据操纵语言: 就是我们最经常用到的 SELECT.UPDATE.INSERT.DELETE. 主要用来对数据库的数据进行一些 ...
- composer 更新命令及常用命令
composer 安装 官方地址:https://getcomposer.org/download/ 下载地址:https://getcomposer.org/Composer-Setup.exe 下 ...
- Docker 入门指南——常用命令
前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令. 基本概念 镜像 Image 镜像是一些打包好的已有的环境,可以被用来启动和创建容器 容器 Contai ...
随机推荐
- 关于比特币的“冷存储”和Armory的使用
转自:http://8btc.com/thread-1164-1-1.html 最近随着比特币话题的火热,又有一批人卖房或倾产换成比特币入圈,这一次与以前不同的是,以前倾产入圈的人都是技术人员,有足够 ...
- Linq中使用Left Join 和 Right Join
原文地址:http://www.cnblogs.com/xinjian/archive/2010/11/17/1879959.html 准备一些测试数据,如下: use Test Create tab ...
- ansible之基本原理及命令
什么是ansible ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(\(puppet.chef.func.fabric\))的优点,实现了批量系统配置.批量程序部署 ...
- Nginx配置虚拟机,url重写,防盗链
配置目录: · 虚拟主机 · PHP支持 · URL重写 · 防止盗链 · 持续更新… 一.虚拟主机 1.创建 文件格式:{域名}.conf 具体如下: $ s ...
- Mac os下profile设置
Mac os环境下home目录下是没有profile文件的开启终端后,读取的是/etc/profile文件因为个人喜欢使用ll命令,mac默认并没有这个命令,所以使用如下方法设置别名 cp -rp / ...
- EJB 3.1 @Startup @Singleton sequence
The annotation javax.ejb.Startup (@Startup) is used to mark an EJB so to make the EJB can be brought ...
- June 29th 2017 Week 26th Thursday
Hope for the best, but prepare for the worst. 做最好的期望,做最坏的打算. Always remember that quotes about being ...
- AWK入门指南
一. AWK入门指南 Awk是一种便于使用且表达能力强的程序设计语言,可应用于各种计算和数据处理任务.本章是个入门指南,让你能够尽快地开始编写你自己的程序.第二章将描述整个语言,而剩下的章节将向你展示 ...
- HDU 2018 Multi-University Training Contest 1 Triangle Partition 【YY】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6300 Triangle Partition Time Limit: 2000/1000 MS (Java ...
- 2019.1.9 Mac安装Iterm2 终端(oh my zsh的安装与配置)
Mac安装Iterm2 终端(oh my zsh的安装与配置) 安装 curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tool ...