composer安装和常用操作
前言
在github还没有兴起的年代,我们是需要到工具的官网下载代码,比如jquery。然后放到我们自己的项目目录里,再在我们的页面中使用。
但是…当一个网站依赖的包越来越多,
我们会发现这是一件非常麻烦的事情:
安装新包,代码目录管理等问题
升级依赖包,只能手动替换文件
安装过程发现某个包需要依赖于另一个包,那我们又要开始安装前面的包…
哪怕是每个开源包都有自己的官网,也还是需要用户去下载安装。
即使是有一个类似github的大仓库,可以存放所有的项目,实现一站下载。
但不同依赖包之间的关系也还是需要手动维持,包与包之间的关系有可能是相互依赖,也可能是冲突的。
比如A包需要的PHP版本是小于7的,而B包需要的PHP版本是大于等于7的,那么你安装下来就是有冲突的,可能你在使用之前都没有注意环境的要求,直到遇到各种坑….
于是就有依赖包管理工具的诞生了,如前端使用的npm,java使用的maven,安卓的Gradle等等。在PHP中我们使用的工具叫Composer。
当我们需要加载一个新包的时候,我们只需要一条命令,工具就会自动构建安装,并且在安装之前如果检测到环境或者需要依赖其他包,管理工具也会做出相应的处理,比如提示终止、自动安装依赖包。
当我们需要更新包的时候,我们也只需要一条命令,就可以实现工具包的升级,在这过程也依然会检测新版本包需要的环境和依赖等。
所以说,依赖包管理工具 为我们在管理依赖包的工作上带来了极大的便利。
一、composer 是什么?
Composer 是一个命令行工具,它的作用就是帮我们的项目管理所依赖的开发包,属于依赖包管理工具。
composer 是php 安装新包,代码目录管理
二、使用步骤
1.window安装
1.1下载链接composer.exe
1.2下载好之后直接下一步
需要注意的是你需要开启 openssl 配置,我们打开 php 目录下的 php.ini,将 extension=php_openssl.dll 前面的分号去掉就可以了。
小皮面板安装的环境,要注意自己使用的PHP版本
1.3安装成功后,我们可以通过命令窗口(cmd) 输入 composer --version 或者 composer -v 命令来查看是否安装成功:
1.4更换全局镜像 外网的镜像下载比较慢,可以跳过
接下来我们可以更改阿里云 Composer 全量镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
取消配置:
composer config -g --unset repos.packagist
单项目配置
仅修改当前工程配置,仅当前工程可使用该镜像地址:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/
调试
composer -vvv require alibabacloud/sdk
遇到问题?
建议先将Composer版本升级到最新:
composer self-update
执行诊断命令:
composer diagnose
清除缓存:
composer clear
若项目之前已通过其他源安装,则需要更新 composer.lock 文件,执行命令:
composer update --lock
2.Linux 安装
Linux 平台可以使用以下命令来安装:
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
移动 composer.phar,这样 composer 就可以进行全局调用:
mv composer.phar /usr/local/bin/composer
切换为国内镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
更新 composer:
composer selfupdate
composer 安装遇到问题:
composer -v
Unknown command: composer
解决办法
1:php的链接在/usr/local/bin/php中
2:cp composer /usr/bin/composer,将composer从下载的地址复制到/usr/bin/composer中
我的理解是bin没有找到对应的 composer
usr/local/bin 下的软链没有指到对应的位置
lrwxrwxrwx 1 root root 22 9月 2 09:53 php -> /usr/local/php/bin/php
3.给 权限
chmod +x /usr/bin/composer
3.Mac OS 系统
Linux 平台可以使用以下命令来安装:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer --version
切换为国内镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
更新 composer:
composer selfupdate
三、composer 的简单使用
1.Composer install 的使用
要使用 Composer,我们需要先在项目的目录下创建一个 composer.json 文件,文件描述了项目的依赖关系。
文件格式如下:
{
"require": {
"monolog/monolog": "1.2.*"
}
}
以上文件说明我们需要下载从 1.2 开始的任何版本的 monolog。
接下来只要运行以下命令即可安装依赖包:
composer install
2. require 命令
除了使用 install 命令外,我们也可以使用 require 命令快速的安装一个依赖而不需要手动在 composer.json 里添加依赖信息:
composer require 项目名
Composer 会先找到合适的版本,然后更新composer.json文件,在 require 那添加 monolog/monolog 包的相关信息,再把相关的依赖下载下来进行安装,最后更新 composer.lock 文件并生成 php 的自动加载文件。
3.update 命令
update 命令用于更新项目里所有的包,或者指定的某些包:
更新所有依赖
composer update
更新指定的包
composer update monolog/monolog
更新指定的多个包
composer update monolog/monolog symfony/dependency-injection
还可以通过通配符匹配包
$ composer update monolog/monolog symfony/*
需要注意的时,包能升级的版本会受到版本约束的约束,包不会升级到超出约束的版本的范围。例如如果 composer.json 里包的版本约束为 ^1.10,而最新版本为 2.0。那么 update 命令是不能把包升级到 2.0 版本的,只能最高升级到 1.x 版本。关于版本约束请看后面的介绍。
4.remove 命令
remove 命令用于移除一个包及其依赖(在依赖没有被其他包使用的情况下),如果依赖被其他包使用,则无法移除:
composer remove 包名
5.search 命令
search 命令可以搜索包:
composer search 报名
该命令会输出包及其描述信息,如果只想输出包名可以使用 --only-name 参数:
composer search --only-name monolog
6.show 命令
show 命令可以列出当前项目使用到包的信息:
列出所有已经安装的包
composer show
#可以通过通配符进行筛选
composer show 包名/*
显示具体某个包的信息
composer show monolog/monolog
7.基本约束
7.1范围
通过使用比较操作符来指定包的范围。这些操作符包括:>,>=,<,<=,!=。
你可以定义多个范围,使用空格或者逗号 , 表示逻辑上的与,使用双竖线 || 表示逻辑上的或。其中与的优先级会大于或。 实例:
=1.0
=1.0 <2.0
=1.0 <1.1 || >=1.2
我们也可以通过使用连字符 - 来指定版本范围。
连字符的左边表明了 >= 的版本,如果右边的版本不是完整的版本号,则会被使用通配符进行补全。例如1.0 - 2.0等同于>=1.0.0 <2.1(2.0相当于2.0.*),而1.0.0 - 2.1.0则等同于>=1.0.0 <=2.1.0。
7.2通配符
可以使用通配符来设置版本。1.0.*相当于>=1.0 <1.1。
7.3波浪号 ~
我们先通过后面这个例子去解释
~1.2相当于>=1.2 <2.0.0,而~1.2.3相当于>=1.2.3 <1.3.01.2相当于>=1.2 <2.0.0,而~1.2.3相当于>=1.2.3 <1.3.0。
对于使用Semantic Versioning作为版本号标准的项目来说,这种版本约束方式很实用。
例如~1.2定义了最小的小版本号,然后你可以升级2.0以下的任何版本而不会出问题,因为按照Semantic Versioning的版本定义,小版本的升级不应该有兼容性的问题。简单来说,~定义了最小的版本,并且允许版本的最后一位版本号进行升级
7.4折音号 ^
^操作符的行为跟Semantic Versioning有比较大的关联,它允许升级版本到安全的版本。
例如,^1.2.3相当于>=1.2.3 <2.0.0,因为在2.0版本前的版本应该都没有兼容性的问题。
而对于1.0之前的版本,这种约束方式也考虑到了安全问题,例如^0.3会被当作>=0.3.0 <0.4.0对待。
例子:^1.2.3
版本稳定性
如果你没有显式的指定版本的稳定性,Composer会根据使用的操作符,默认在内部指定为-dev或者-stable。例如:
1.2 >1.2.0.0-stable
=1.2 >=1.2.0.0-dev
如果你想指定版本只要稳定版本,你可以在版本后面添加后缀-stable。
minimum-stability 配置项定义了包在选择版本时对稳定性的选择的默认行为。默认是stable。它的值如下(按照稳定性排序):dev,alpha,beta,RC和stable。除了修改这个配置去修改这个默认行为,我们还可以通过稳定性标识(例如@stable和@dev)来安装一个相比于默认配置不同稳定性的版本。例如:
{
"require": {
"monolog/monolog": "1.0.*@beta",
"acme/foo": "@dev"
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix