手把手教你在国内用正确的姿势使用 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

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

相关文章
|
28天前
|
缓存 JavaScript 前端开发
【热门话题】深入浅出:npm常用命令详解与实践
**npm命令详解:**了解基本概念和安装后,通过`npm init`生成`package.json`。安装包用`install [package]`,加`--save`或`--save-dev`管理依赖。移除包用`uninstall`,更新用`update`,全局安装加`-g`。搜索包用`search`,查看依赖用`list`,检查过时包用`outdated`,审计安全用`audit`。版本控制用`version`,发布包用`publish`。掌握这些命令能提升开发效率。探索更多npm特性,加强项目管理和协作。
28 6
|
4月前
|
数据采集 机器学习/深度学习 JavaScript
5个火爆 GitHub 的 Python 练习项目,快来收藏!
5个火爆 GitHub 的 Python 练习项目,快来收藏!
171 0
|
4月前
|
Docker 容器
启航kp OpenHarmony环境搭建
启航kp OpenHarmony环境搭建
50 0
|
11月前
|
机器学习/深度学习 前端开发 Linux
《智能前端技术与实践》——第1章 开发环境配置——1.1 安装 Anaconda3
《智能前端技术与实践》——第1章 开发环境配置——1.1 安装 Anaconda3
137 0
|
算法 数据挖掘 测试技术
上海交大软件学院课件 NPM、PYPI、DockerHub 备份
上海交大软件学院课件 NPM、PYPI、DockerHub 备份
92 0
|
人工智能 缓存 NoSQL
在Github中77k星的AutoGPT安装及配置教程,能实现独立思考自动化
十分重磅!GPT3.5都还没玩明白,傍着GPT4的AutoGPT就又要乱杀了,特斯拉前 AI 总监、刚刚回归 OpenAI 的 Andrej Karpathy也提到“AutoGPT”将成为提示工程的下一个前沿,网上很多人只提突破性,不提局限性,twitter的原话是prompt engineering领域,因此其他领域还是坐观新测
1657 0
在Github中77k星的AutoGPT安装及配置教程,能实现独立思考自动化
|
Cloud Native 程序员 Go
《阿里开发者手册-Golang专题》电子版下载
本期以 Go 语言为主题,收纳阿里巴巴资深程序员语青、丛霄、蜂翅、赋行、路德、冀锋 6 位的优秀技术文章。精解 Go 语言开发应用、常见技术难点以及产品创新实践等,帮助更多开发者快速掌握 Go 语言核心架构及功能,高效解决问题,提升研发效率,在云原生的浪潮下扬帆起航!
120 0
《阿里开发者手册-Golang专题》电子版下载
|
Java
《《阿里巴巴Java开发手册》1.3.0版本【非最新版】》电子版地址
《阿里巴巴Java开发手册》1.3.0版本【非最新版】
115 0
《《阿里巴巴Java开发手册》1.3.0版本【非最新版】》电子版地址
|
Java
《《Java开发手册》2019最新版发布!》电子版地址
《Java开发手册》2019最新版发布!
84 0
《《Java开发手册》2019最新版发布!》电子版地址
|
存储 资源调度 JavaScript
前端包管理 pnpm 学习资料整理
上周 pnpm 发布 6.32,支持 `onlyBuiltDependencies`,它是一个功能全面,性能优越的包管理器,快来体验 pnpm 吧。
880 0