composer命令详解
composer命令行
你已经学会了如何使用命令行界面做一些事情。本章将向你介绍所有可用的命令。
为了从命令行获得帮助信息,请运行composer或者composer list 命令,然后结合--help命令来获得更多的帮助信息。
全局参数
下列参数可与每一个命令结合使用:
--verbose(-v):增加反馈信息的详细度。
- -v表示正常输出。
- -vv表示详细的输出。
- -vvv则是为了debug。
--help(-h):显示帮助信息。
--quiet(-q):禁止输出任何信息。
--no-interaction(-n):不要询问任何交互问题。
--working-dir(-d):如果指定的话,使用给定目录作为工作
--profile:显示时间和内存使用信息。
--ansi:强制ANSI输出。
--no-ansi:关闭ANSI输出。
--version(-V):显示当前应用程序的版本信息。
进程退出代码:
- 0:正常
- 1:通用/未知错误
- 2:依赖关系处理错误
初始化init
在“库”那一章我们看到了如何手动创建composer.json文件。实际上还有一个init命令可以更容易的做到这一点。
当您运行该命令,它会以交互方式要求您填写一些信息,同时聪明的使用一些默认值。
php composer.phar init
初始化-参数
- --name:包的名称。
- --description:包的描述。
- --author:包的作者。
- --homepage:包的主页。
- --require:需要依赖的其它包,必须要有一个版本约束。并且应该遵循foo/bar:1.0.0这样的格式。
- --require-dev:开发版的依赖包,内容格式和--require相同。
- stability(-s):minimum-stability字段的值。
安装install
install命令从当前目录读取composer.json文件,处理依赖关系,并把其安装到vendor目录下。
php composer.phar install
如果当前目录下存在composer.lock文件,它会从此文件读取依赖版本,而不是根据composer.json去获取依赖。这确保了该库的每个使用者都能得到相同的依赖版本。
如果没有composer.lock文件,composer将在处理依赖关系后创建它。
安装-参数
- --prefer-source:下载包的方式有两种:sourse和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 autoload到classmap可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。
更新update
为了获取依赖的最新版本,并且升级composer.lock文件,你应该使用update命令。
php composer.phar update
这将决绝项目的所有依赖,并将确切的版本号写入composer.lock。
如果你只是想更新几个包,你可以像这样分别列出它们:
php composer.phar update vendor/package vendor/package2
你还可以使用通配符进行批量更新:
php composer.phar 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 autoload到classmap可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。
- --lock:仅更新lock文件的hash,取消有关lock文件过时的警告。
- --with-dependencies同时更新白名单内包的依赖关系,这将进行递归更新。
声明依赖require
require命令增加新的依赖包到当前目录的composer文件中。
php composer.phar require
在添加或者改变依赖时,修改后的依赖关系将被安装或者更新。
如果你不希望通过交互指定依赖包,你可以在这条命令中直接声明依赖包。
php composer.phar require vendor/package:2.* vendor/package2:dev-master
声明依赖-参数
- --prefer-source:当有可用的包时,从source安装。
- --prefer-dist:当有可用的包时,从dist安装。
- --dev:安装require-dev字段中列出的包。
- --no-update:禁用依赖关系的自动更新。
- --no-progress:移除进度信息,这可以避免一些不处理换行的终端或者脚本出现混乱的显示。
- --update-with-dependencies:并更新新装包的依赖。
全局执行global
global命令允许你在COMPOSER_HOME目录下执行其它命令,像install、require或者update。
并且如果你将$OMPOSER_HOME/vendor/bin加入到了$PATH环境变量中,你就可以用它咋命令行中安装全局应用。下面是一个例子:
php composer.phar global require fabpot/php-cs-fxer:dev-master
现在php-cs-fixer就可以在全局范围使用了(假设你已经设置了你的PATH)。如果稍后你想更新它,你只需要运行global update:
php composer.phar global update
搜索search
search命令允许你为当前项目搜索依赖包,通常它只要搜索Packagist.org上的包。你可以简单的输入你的搜索条件。
php composer.phar search monolog
您也可以通过传递多个参数来进行多条件搜索。
搜索-参数
- --only-name(-N)仅针对指定的名称搜索(完全匹配)。
展示show
列出所有可用的软件包,你可以使用show命令。
php composer.phar show
如果你想看到一个包的详细信息,你可以输入一个包名称。
php composer.phar show monolog/monolog
你甚至可以输入一个团建包的版本号,来显示该版本的详细信息。
php composer.phar show monolog/monolog 1.0.2
展示-参数
--installed (-i):列出已安装的依赖包。
--platform(-p):仅列出平台软件包(配合配合它的扩展)。
--self(-s):仅列出当前项目信息。
依赖性检测 depends
depends命令可以查出已安装在你项目中的某个包,是否正在被其它的包所依赖,并列出他们。
php composer.phar depends --link-type=require monolog/monolog
依赖性检测-参数
- --link-type:检测的类型,默认为require也可以是require-dev。
有效性检测validate
在提交composer.json文件,和创建tag前,你应该始终运行validate命令。它将检测你的composer.json文件是否是有效的。
php composer.phar validate
有效性检测参数
- --no-check-all:composer是否进行完整的校验。
依赖包状态检测status
如果你经常修改依赖包里的代码,并且它们是从source(自定义源)进行安装的,那么status命令允许你进行检查,如果你有任何本地的更改它将会给予提示。
php composer.phar status
你可以使用--verbose系列参数(-v|vv|vvv)来获取更新的详细:
php composer.phar status -v
自我更新self-update
将composer自身升级到最新版本,只要运行self-update命令。它将替换你的composer.phar文件到最新版本。
php composer.phar self-update
如果你想要升级到一个特定的版本,可以这样简单的指定它:
php composer.phar selft-update 1.0.0-alpha7
如果你已经为整个系统安装composer,你可能需要在root权限下运行它:
sudo composer self-update
自我更新-参数
- --rollback(-r):回滚奥你已经安装的最后一个版本。
- --clean-backups:在更新删除旧的备份,这使得更新过后的当前版本是唯一可用的备份。
更改配置config
config命令允许你编辑composer的一些基本设置,无论是本地的composer.json或者全局的config.json文件。
php composer.phar config --list
更改配置-使用方法
config [options] [setting-key] [setting-value1] ... [setting-valueN]
setting-key是一个配置选项的名称,setting-value1是一个配置的值。可以使用数组作为配置(github-procols),多个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参数一起使用。
修改包来源
除了修改配置选项,config命令还支持通过以下方法修改来源信息:
php composer.phar config repositories.foo vcs http://github.com/foo/bar
创建项目create-project
你可以使用composer从现有的包中创建一个新的项目。这相当于执行了git clone 或者SVN checkout命令后将这个包的依赖安装到它自己的vendor目录。
此命令有几个常见的用途:
- 你可以快速的部署你的应用。
- 你可以检出任何资源包,并开发它的补丁。
- 多人开发项目,可以用它加快应用的初始化。
-
要创建基于composer的新项目,你可以使用“create-project”命令。传递一个包名,它会为你创建项目的目录。你也可以在第三参数中指定版本号,否则将获取最新的版本。
如果该目录不存在,则会在安装过程中自动创建。
php composer.phar create-project doctrine/orm path 2.2.*
此外,你也可以无需使用这个命令,而是通过现有的composer.json文件来启动这个项目。
默认情况下,这个命令会在Packagist.org上查找你指定的包。
创建项目-参数
--repository-url:提供一个自定义的存储库来搜索包,这将被用来替代Packagist.org。可以是一个指向composer资源库的http URL,或者是指向某个Packagist.json文件的本地路劲。
--stability(-s):资源包的最低稳定版本,默认为stable。
--prefer-source:当有可用的包时,从source安装。
--prefer-dist:当有可用的包时,从dist安装。
--dev:安装require0dev字段中列出的包。
--no-install:禁止安装包的依赖。
--no-plugins:禁用plugins。
--no-scripts:禁止在根资源包中定义的脚本执行。
--no-progress:移除进度信息,这可以避免一些不处理换行的终端或者脚本出现混乱的显示。
--keep-vcs:创建时跳过缺失的VCS。如果你在非交互模式下运行创建命令,这将是非常有用的。
打印自动加载索引 dump-autoload
某些情况下你需要更新autoloader,例如在你的包中加入了一个新的类。你可以使用dump-autoload来完成,而不必执行install或者update命令。
此外,它可以打印一个优化过的,符合PSR-0/4规范的类的索引,这也是出于对性能的可靠性考虑。在大型的应用中会有许多类文件,而autoload会占用每个请求的很大一部分时间,使用classmaps或许在开发时不太方便,但它在保证性能的前提下,任然可以获得PSR-0/4规范带来的便利。
打印自动加载索引-参数
- --optimize (-o):转换PSR-0/4 autoloading到classmap获得更快的载入速度。这特别使用于生产环境,但可能需要一些时间来运行,因此它目前不是默认设置。
- --no-dev:禁用autoload-dev规则。
查看许可协议licenses
列出已经安装的每个包的名称、版本、许可协议。可以使用--format-json参数来获取json格式的输出。
执行脚本run-script
你可以运行此命令来手动执行脚本,只需要指定脚本的名称,可选的--no-dev参数允许你禁用开发者模式。
诊断diagnose
如果你绝得发现了一个bug或是程序行为变得怪异,你可能需要运行diagnose命令,来帮助你检测一些常见的问题。
php composer.phar diagnose
归档archive
此命令用来对指定包的指定版本进行zip/tar归档。它也可以用来归档你的整个项目,不包括excluded/ignored(排除/忽略)的文件。
php composer.phar archive vendor/package 2.0.21 --format=zip
归档-参数
- --format(-f):指定归档格式:tar或者zip(默认为tar)。
- --dir:指定归档存放的目录(默认为当前目录)。
获取帮助信息help
使用help可以获取指定命令的帮助信息。
php composer.phar help install
环境变量
你可以设置一些环境变量来覆盖默认的配置。建议尽可能的在composer.json的config字段中设置这些值,而不是通过命令行设置环境变量。值得注意的是环境变量中的值,将始终优先于composer.json中所指定的值。
COMPOSER
环境变量COMPOSER可以为composer.json文件制定其他的文件名。
COMPOSER_ROOT_VERSION
通过设置这个环境变量,你可以指定root包的版本,如果程序不能从VCS上猜测出版本号,并且未在composer.json文件中申明。
COMPOSER_VENDOR_DIR
通过设置这个环境变量,你可以指定composer将依赖安装在vendor以外的其它目录中。
COMPOSER_BIN_DIR
通过设置这个环境变量,你可以指定bin(Vendor Binaries)目录到vendor/bin以外的其它目录。
http_proxy or HTTP_PROXY
如果你是通过HTTP代理来使用composer,你可以使用http_proxy或者HTTP_PROXY环境变量。只要简单的将它设置为代理服务器的URL。许多操作系统已经为你的服务设置了此变量。
建议使用http_proxy(小写)或者两者都进行定义。因为某些工具,像Git或者curl将使用http_proxy小写的版本。另外,你还可以使用git config --global http.proxy 来单独设置Git的代理。
no_proxy
如果你是使用代理服务器,并且想要对某些域名禁用代理,就可以使用no_proxy环境变量。只需要输入一个逗号相隔的域名排除列表。
此环境变量接受域名、IP、以及CIDR地址快。你可以将它限制到一个端口(例如:80)。你还可以把它设置为*来忽略所有的HTTP代理请求。
HTTP_PROXY_REQUEST_FULLURI
如果你使用了HTTPS代理,但它不支持request_fulluri标签,那么你应该设置这个环境变量为false或者0,来防止composer从request_fulluri读取配置。
COMPOSER_HOME
COMPOSER_HOME环境变量允许你改变composer的主目录。这是一个隐藏的、所有项目共享的全局目录(对本机的所有用户都可用)。
它在各个系统上的默认值分别为:
- --*nix /home/<user>/.composer。
- --OSX /Users/<user>/.composer。
- Windows c:\Users\<user>\Appdata\Roaming\Composer。
COMPOSER_HOME/config.json
你可以在COMPOSER_HOME目录中放置一个config.json文件。在你执行install和update命令时,composer会将它与你项目中的composer.json文件进行合并。
若全局和项目存在相同配置项,那么项目中的composer.json文件拥有更高的优先级。
COMPOSER_CACHE_DIR
COMPOSER_CACHE_DIR 环境变量允许你设置composer的缓存目录,这也可以通过cache-dir进行配置。
它在各个系统上的默认值分别为:
- *nix and OSX $COMPOSER_HOME/cache。
- Windows c:\Users<user>\AppData\Local\Composer或者%LOCALAPPDATA%/Composer。
COMPOSER_PROCESS_TIMEOUT
这个环境变量控制着composer执行命令的等待时间(例如:git命令)。默认值为300秒(5分钟)。
COMPOSER_DISCARD_CHANGES
这个环境变量控制着discard-changes config_options。
COMPOSER_NO_INTERACTION
如果设置为1,这个环境变量将使composer在执行每一个命令时都放弃交互,相当于对所有命令都使用了--no-interaction。可以在搭建虚拟机/持续集成服务器时这样设置。
composer命令详解的更多相关文章
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- linux yum命令详解
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RP ...
- Linux下ps命令详解 Linux下ps命令的详细使用方法
http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...
- Docker命令详解
Docker命令详解 最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...
- linux awk命令详解
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- android adb 命令详解
ADB (Android Debug Bridge) 是android SDK中的工具,需要先配置环境变量才能使用.起调试桥的作用,可以管理安卓设备.(也叫debug工具) ---------查看设 ...
- Git 常用命令详解
Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...
- Top 命令详解
Top 命令详解 先感受一下top命令的执行结果吧!哈哈-- top - 17:32:34 up 3 days, 8:04, 5 users, load average: 0.09, 0.12, 0. ...
- Ruby Gem命令详解
转自:http://www.jianshu.com/p/728184da1699 Gem介绍: Gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem(如 http://rubygems.o ...
随机推荐
- Atitit phpstorm配置attilax总结
Atitit phpstorm配置attilax总结 1. 前期准备 1 1.1. 配置interpreter 1 1.2. debug需要xdebug的支持,不管是script模式还是web模式 3 ...
- FOR XML PATH 可以将查询结果根据行输出成XML格式
SELECT CAST(OrderID AS varchar)+',' as OrderNo FROM Product CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型 SELECT C ...
- pandas的qcut()方法
pandas的qcut可以把一组数字按大小区间进行分区,比如 data = pd.Series([0,8,1,5,3,7,2,6,10,4,9]) 比如我要把这组数据分成两部分,一半大的,一半小的,如 ...
- 《Essential C++》读书笔记 之 C++编程基础
<Essential C++>读书笔记 之 C++编程基础 2014-07-03 1.1 如何撰写C++程序 头文件 命名空间 1.2 对象的定义与初始化 1.3 撰写表达式 运算符的优先 ...
- Stanford Corenlp学习笔记——词性标注
使用Stanford Corenlp对中文进行词性标注 语言为Scala,使用的jar的版本是3.6.0,而且是手动添加jar包,使用sbt添加其他版本的时候出现了各种各样的问题 添加的jar包有5个 ...
- Solr学习笔记——查询
1.进入Solr管理界面http://localhost:8983/solr/ 可以看到Query中有若干的参数,其意义如下(参考:http://www.jianshu.com/p/3c4cae5de ...
- 如何查看tomcat启动异常日志详情
我的电脑同时使用两个jdk版本,默认1.7,eclipse使用的是1.8,,由于项目启动时有加载类需要jdk1.8的包,1.7不支持.所以导致项目在eclipse直接能够跑,而在外面的tomcat跑是 ...
- 【01月22日】A股滚动市盈率PE最低排名
深康佳A(SZ000016) - 滚动市盈率PE:1.55 - 滚动市净率PB:1.03 - 滚动年化股息收益率:4.71% - - - 深康佳A(SZ000016)的历史市盈率走势图 华菱钢铁(SZ ...
- [UFLDL] Generative Model
这一部分是个坑,应该对绝大多数菜鸡晕头转向的部分,因为有来自物理学界的问候. Deep learning:十九(RBM简单理解) Deep learning:十八(关于随机采样) 采样方法 [B ...
- [IR] Search Server - Sphinx
使用 Sphinx 更好地进行 MySQL 搜索 - IBM 尽管 MySQL 是一个出色的通用数据库,但是如果您的应用程序需要进行大量搜索,那么使用 Sphinx 可获得更好的性能. 尽管 Sphi ...