基础 - 安装一个包

  • 作者:KK

  • 发表日期:2017.6.12


尝试一下安装

  1. 先准备一个你要放代码的目录,在这个目录下新建一个名字叫composer.json的文件,书写以下内容:

    {
    	"require": {
    		"monolog/monolog": "1.0.*"
    	}
    }
    
  2. 命令行cd到这个目录执行composer install或者php path/to/composer.phar install

    接下来composer就会读取json文件里的信息,然后根据这些信息去在线下载并安装代码包了

    它默认走的是国外线路,速度慢,不稳定,后面会教你如何切换到国内线路

安装完毕后在目录下会多出了composer.lockvendor目录,vendor里面有个monolog子目录,而monolog怎么用呢就要进vendor/monolog/monolog/composer.json里找到homepage所指的网址去学习了

可以说这里是通过composer下载安装了一个PHP插件代码包,未来还要用composer安装/更新各种各样的代码包


composer.lock说明

首先在composer.json里傻瓜都能发现它要求下载monolog的1.0.X版本了,于是composer到网络仓库中找找有哪个版本是符合1.0.X的,最终发现了1.0.2版本,于是就下载了这个版本

而composer.lock就是记载了最终下载的版本号

下这个最终下载的版本号有什么作用呢?

通常项目下会有我们自己写的代码,然后我们的代码调用了monolog,于是通过composer安装monolog

可是其他项目成员也要下载monolog呀,于是我们可能只要提交composer.json到代码仓库中就行了

但是如果当前我们安装的是1.0.2版本,一天后monolog发布了1.0.3,于是一天后加入的新成员会下载到1.0.3版本,跟老成员的版本就会不一样了,所以这样可能会造成运行效果不一样

为了保证未来的新成员也会下载到同样的1.0.2版本,我们就要把composer.lock也提交到仓库,这样执行composer install的时候它会检查lock文件有没有指定的版本,有的话就下载这个版本,于是新老项目成员的代码包版本就一样了


把vendor目录也提交到仓库不就行了?

这个方法虽然可以,但是意味着如果项目用到的第三方代码包越多,提交的内容就越大,实际上可以只提交自己开发的部分,第三方代码的话就直接提交composer.json,让成员们自己去通过网络安装

特别是网上那些很规范、标准化程度高的项目会这样做,他们不会把依赖的第三方插件包也放在项目内,只会给你一个composer.json和lock文件让你自己去下载

至少多了这个lock文件就让我们可以实现只发布少量代码的项目,但具体要怎么发布也是看你自己了

说实话,我也提交vendor到仓库

在公司里的项目我都是附带vendor一起提交到仓库的,因为国内的实际情况就是连接国外网络比较慢,而且不稳定,同事们下载代码那么辛苦还不如从公司的代码仓库下载呢?


怎么知道还可以安装哪些包呢?

访问https://packagist.org,在上面能找到好多……不过要有点英文功底,或者一些著名的包会在交流群里传来传去,然后你就能知道了

作为一个有能力自己找代码包的开发者,这对他来说完全不成难事(有位网友就是专在这种平台上找各种包然后组装成项目需要的东西,完全没用框架)

但当然日常工作中我们大部分程序员还是英文不怎么行啊,于是其实身边没太多人会主动上去找,一般都是用到哪个插件,在那个插件官网里被引导用Composer安装才安装的(比如极光推送的PHP SDK就可以用Composer安装,又比如Yii2框架也可以)