手把手教你在国内用正确的姿势使用 Composer

简介: Composer 是 PHP 的一个依赖管理工具。我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻松的使用一个命令将其他人的优秀代码引用到我们的项目中来。本文将为大家介绍在国内如何正确地安装和使用 Composer。

安装 composer 命令行工具

# 下载
curl -sS https://getcomposer.org/installer | php
# 移动且重命名
mv composer.phar /usr/local/bin/composer

实例操作记录:

bogon:~ zhoumengkang$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...
Composer (version 1.6.4) successfully installed to: /Users/zhoumengkang/composer.phar
Use it: php composer.phar
bogon:~ zhoumengkang$ mv composer.phar /usr/local/bin/composer

使用镜像

因为访问国外比较慢,可以使用阿里云 https://developer.aliyun.com/composer 提供的镜像。

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

原理是修改了家目录下面的./.composer/config.json
实例操作记录:

bogon:~ zhoumengkang$ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
bogon:~ zhoumengkang$ cd .composer/
bogon:.composer zhoumengkang$ ls
auth.json    cacert.pem    cache        config.json    keys.dev.pub    keys.tags.pub
bogon:.composer zhoumengkang$ cat config.json
{
    "config": {},
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://mirrors.aliyun.com/composer/"
        }
    }
}
bogon:.composer zhoumengkang$ pwd
/Users/zhoumengkang/.composer

在项目中使用

直接在命令行引入第三方包

进入一个项目直接执行compser命令即可,比如我们要安装phpunit包,只需要在项目目录下执行以下命令即可。

composer require --dev phpunit/phpunit ^6.2

实例操作记录:

bogon:untitled4 zhoumengkang$ composer require --dev phpunit/phpunit ^6.2
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 28 installs, 0 updates, 0 removals
  - Installing sebastian/version (2.0.1): Downloading (100%)         
...           
sebastian/global-state suggests installing ext-uopz (*)
phpunit/phpunit suggests installing phpunit/php-invoker (^1.1)
Writing lock file
Generating autoload files

不需要预先配置composer.json,如果没有该文件,则自动生成该文件。如下

{
    "require-dev": {
        "phpunit/phpunit": "^6.2"
    }
}

如果该文件已经存在,则会把配置添加到该文件中去,这样当你删除了vendor目录,就可以使用更新命令来重新生成。

根据composer.json来安装第三方包

composer install

或者

composer update

只想安装或者更新某个特定的库,不想更新它的所有依赖,则可以使用

composer install foo/bar
composer update foo/bar

实例操作记录:

bogon:untitled4 zhoumengkang$ ls
composer.json   composer.lock   vendor
bogon:untitled4 zhoumengkang$ rm -rf vendor/
bogon:untitled4 zhoumengkang$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 28 installs, 0 updates, 0 removals
  - Installing webmozart/assert (1.3.0): Loading from cache
...
sebastian/global-state suggests installing ext-uopz (*)
phpunit/phpunit suggests installing phpunit/php-invoker (^1.1)
Generating autoload files

注意事项

composer.lock

在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件。这将锁定该项目的特定版本。
请提交你应用程序的 composer.lock (包括 composer.json)到你的版本库中。这是非常重要的,因为 install 命令将会检查锁文件是否存在,如果存在,它将下载指定的版本(忽略 composer.json 文件中的定义)。
这意味着,任何人建立项目都将下载与指定版本完全相同的依赖。你的持续集成服务器、生产环境、你团队中的其他开发人员、每件事、每个人都使用相同的依赖,从而减轻潜在的错误对部署的影响。即使你独自开发项目,在六个月内重新安装项目时,你也可以放心的继续工作,即使从那时起你的依赖已经发布了许多新的版本。

自动加载优化

composer dump-autoload --optimize

能够大大减少系统自动加载时间。

相关文章
|
10月前
|
Ubuntu
Ubuntu系统镜像下载,国内镜像站大全(山大/清华/阿里/浙大/中科大...)
装Ubuntu,是很多理工科同学入门的第一个挑战,首先我们就需要找到一个能用的iso镜像,根据你的网络环境的不同,不同的站点下载速度会不一样,下面列举一下几个比较好用的,都是来自Ubuntu官方推荐镜像站链接导航国内分区
3100 0
|
6月前
|
前端开发
手把手带你一起写迅雷官网(一)
手把手带你一起写迅雷官网
|
6月前
|
前端开发 JavaScript
手把手带你一起写迅雷官网(二)
手把手带你一起写迅雷官网
|
机器学习/深度学习 前端开发 Linux
《智能前端技术与实践》——第1章 开发环境配置——1.1 安装 Anaconda3
《智能前端技术与实践》——第1章 开发环境配置——1.1 安装 Anaconda3
149 0
|
算法 数据挖掘 测试技术
上海交大软件学院课件 NPM、PYPI、DockerHub 备份
上海交大软件学院课件 NPM、PYPI、DockerHub 备份
117 0
《平头哥剑池CDK快速上手指南》电子版下载地址
《平头哥剑池CDK快速上手指南》电子书
256 0
《平头哥剑池CDK快速上手指南》电子版下载地址
|
机器学习/深度学习 Python Windows
QPT打包工具(V1.0a7)心动初体验
为Windows而生的深度学习打包工具,致力于解决目前市面上打包工具,具有局限性,无法很好打包的缺点 优点:快狠准!解决疑难杂症!针对性很强,关键是真的很好用!
435 0
QPT打包工具(V1.0a7)心动初体验
|
JavaScript 前端开发 开发工具
开源必备,手把手教你做自己的开源项目--如何把代码放到npm上让别人下载
开源必备,手把手教你做自己的开源项目--如何把代码放到npm上让别人下载
开源必备,手把手教你做自己的开源项目--如何把代码放到npm上让别人下载
|
Java
《《阿里巴巴Java开发手册》1.3.0版本【非最新版】》电子版地址
《阿里巴巴Java开发手册》1.3.0版本【非最新版】
127 0
《《阿里巴巴Java开发手册》1.3.0版本【非最新版】》电子版地址
|
JavaScript 数据安全/隐私保护
Hexo+Next8的升级踩坑之旅
Hexo+Next8的升级踩坑之旅
174 0