PHP 依赖管理工具 composer 使用简介
后知后觉 暂无评论

composer 是一个依赖管理工具,类似于 Node.js 的 npm ,用这个工具可以方便管理 PHP 项目的依赖并提升安全性。

安装

获取二进制

按照 composer官网的安装教程,先获取可执行文件。

# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
# php composer-setup.php
# php -r "unlink('composer-setup.php');"
小贴士:四个命令分别是下载工具、并检测当前的系统环境(系统、PHP版本等),最后安装。

可以使用国内的中国官网进行安装。

# php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
# php composer-setup.php
# php -r "unlink('composer-setup.php');"

全局安装

$ sudo mv composer.phar /usr/local/bin/composer

使用

升级

# composer selfupdate

版本

# composer --version

清空缓存

# composer clear

补充

大陆提速

这个工具默认使用的安装源都是海外服务器和 GitHub,由于众所周知的原因,速度慢甚至无法连接。

推荐使用国内源进行替换

关于全量与非全量镜像

composer 安装扩展包的时候,会发起两种请求:

小贴士:全量镜像指的是以上两种请求都使用国内服务器加速。而非全量服务器一般只缓存 JSON 数据。

建议根据服务器种类进行选择,本文以阿里云为例,替换安装源。

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

忽略文件

使用 composer 安装依赖时会产生两个文件 composer.jsoncomposer.lock

小贴士:json 文件记录的是插件的列表和版本要求,lock 文件记录的是当前环境已安装的版本。

根据其官方的说明,建议将 composer.lock 文件上传到版本库中。

Committing this file to VC is important because it will cause anyone who sets up the project to use the exact same versions of the dependencies that you are using. Your CI server, production machines, other developers in your team, everything and everyone runs on the same dependencies, which mitigates the potential for bugs affecting only some parts of the deployments. Even if you develop alone, in six months when reinstalling the project you can feel confident the dependencies installed are still working even if your dependencies released many new versions since then. (See note below about using the update command.)

例如 Laravel 的官方忽略文件示例。

/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.env.backup
.phpunit.result.cache
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log

其他忽略文件请根据 IDE 和系统进行区分

使用 PhpStorm 需要加入

/.idea

使用 macOS 需要加入

*/.DS_Store

使用规范

开发人员使用 require 进行增加依赖,运维人员仅需要使用 install 进行安装依赖,只建议开发人员使用 update 对依赖进行更新。

# composer require endroid/qr-code 1.9.3
增加依赖并指定版本号
# composer install
安装当前配置文件中的全部版本

附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。