composer 使用细则

一、composer install 和 composer update 的区别

1.composer.json 文件

指定了项目依赖组件的版本规则及镜像地址

如果没有配置镜像地址,则默认使用全局安装的composer镜像地址

2.composer.lock 文件

保存着当前项目所依赖的php组件的镜像地址及具体的版本号,这样就会有效防止下次install的时候,多人协作依赖的版本不一致问题。

3.composer install

具体分2种情况

第一种:项目里没有composer.lock文件

会根据composer.json文件里配置的版本规则和镜像地址安装组件,并将其安装到vendor目录下。

并生成一个新的composer.lock文件

第二种:项目里有composer.lock文件

不会从 composer.json 文件里读取相关配置规则

直接从composer.lock文件里面的镜像地址安装指定版本的组件

并将其安装到vendor目录下。

4.composer update

从 composer.json 文件里读取第三方组件及其版本配置规则,更新或安装PHP 组件版本

并重新生成一个composer.lock文件,

即会覆盖掉之前的composer.lock文件里的内容

如果依赖的第三方组件有版本更新,update会将最新的版本安装到vendor目录下,并更新composer.lock。风险比较大。

当多人协作开发的时候,需要保证项目所依赖的php组件的版本保持一致

这个时候就要必须把composer.lock加入版本控制当中

如果是个人项目,则随意即可!

二、laravel 项目安装失败问题先试试这个方法

第一步:删除安装失败的laravel项目,window直接删除,linux 使用 rm -rf 文件名(更换为自己的项目文件夹名) 删除。

第二步:使用composer self-update命令确认自己的composer版本是不是最新版本

第三步:使用composer clearcache 命令清除composer缓存

第四步:重点。更换composer镜像为阿里云镜像。

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
即使使用的是官方镜像 https://packagist.phpcomposer.com,也要换成阿里云镜像,官方镜像有毒…

第五步:然后就是正常安装:composer create-project --prefer-dist laravel/laravel 文件名

三、Composer常用的命令整理

composerphp包管理工具,使用它可以很方便进行构建项目,载入三方包,以及各种复杂依赖,自动加载等需要。

1.安装composer

curl -sS https://getcomposer.org/installer | php -- \
    --install-dir=/usr/bin \
    --filename=composer

安装后,使用composer -v来查看版本号等信息。

2.修改代码仓库源

由于composer默认的源服务器在国外,因为众所周知的原因,下载龟速,我们需要将其替换为国内的全量源,目前可用的有这两个:

来自 https://php.cnpkg.org/

composer config -g repos.packagist composer https://php.cnpkg.org

来自 Laravel China

composer config -g repo.packagist composer https://packagist.laravel-china.org

3.查看全部全局配置

composer config -g --list

4.查看单个项目全部配置

composer config --list

5.查看某个配置

composer config -g repositories.packagist.org

6.取消某一项配置

composer config -g --unset repos.packagist

7.创建新项目

创建一个Yii项目

composer create-project --prefer-dist yiisoft/yii2-app-basic basic.com

其中create-project命令后面的--prefer-dist还可以使用--prefer-source,它们的区别:

--prefer-dist会从github上下载.zip压缩包,并缓存到本地。下次再安装就会从本地加载,大大加速安装速度。但她没有保留 .git文件夹,没有版本信息。适合基于这个package进行开发。

--prefer-source 会从githubclone源代码,不会在本地缓存(最新的版本也可以使用缓存了)。保留了.git文件夹,从而可以实现版本控制。适合用于修改源代码。

推荐使用--prefer-dist可以加快速度,在使用的时候有可能会有下面类似的警告:

Failed to download yiisoft/yii2-gii from dist: The zip extension and unzip command are both missing, skipping.
Your command-line PHP is using multiple ini files. Run `php --ini` to show them.

环境中缺少zipunzip工具包,安装一下:

apt-get install zip unzip

之后跟的yiisoft/yii2-app-basic就是项目包名,最后面的basic.com指定新建项目文件夹。

8.检索仓库里的包

composer search monolog/monolog

9.安装新依赖包

composer require monolog/monolog

10.控制版本号

# 指定版本
composer require monolog/monolog 1.24.0
# 版本范围
# 有效的运算符有 >、>=、<、<=、!=,运算符中间使用逗号隔开视作逻辑AND,使用|隔开,视作逻辑OR,AND的优先级更高
# 支持通配符 * 
# 支付波浪号运算符 ~ 限定在最低版本和下一个重要版本更新之前
# 以下都是有效的版本号

# 版本大于等于1.0
>=1.0
# 版本大于等于1.0并且小于2.0
>=1.0,<2.0
# 版本大于等于1.0并且小于1.1,或者版本大于等于1.2
>=1.0,<1.1|>=1.2
# 相当于>=1.0,<1.1
1.0.* 
# 相当于>=1.2,<2.0
~1.2
# 相当于>=1.2.3,<1.3
~1.2.3
# 相当于>=1.2.3,<2.0.0  在多于2位的版本号的时候跟 ~ 有区别
^1.2.3

11.移除依赖包

composer remove monolog/monolog

12.初始化一个composer.json

composer init

13.查看已存在的包

composer info

 根据composer.lock安装依赖包(如果存在),否则根据composer.json

composer install

14.根据composer.json更新依赖到指定范围内最新版,并更新composer.lock文件

composer update

15.清理缓存

composer clearcache

 16.更新composer.phar

composer self-update

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/4996.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2022(一等奖)D277:1998-2019年中国植被动态变化及其影响因素分析

作品介绍 1 应用背景 近半个世纪以来&#xff0c;随着全球气候变化和人类活动的双重干扰&#xff0c;自然生态系统遭到了不同程度的影响。植被作为陆地生态系统的重要组成部分&#xff0c;在陆地生态系统的物质循环和能量流动中发挥着不可替代的作用&#xff0c;是自然生态系统…

Vue自创插件发布到npm以及使用方法

Vue自创插件发布到npm以及使用方法 目标&#xff1a;创建my-popup-selector下拉框组件&#xff0c;并发布到npm&#xff0c;效果如下图&#xff1a; 禁用时样式&#xff1a; ①创建vue项目&#xff1a; my-popup-selector ②项目目录结构截图如下&#xff1a; ③在项目根目录…

JVM垃圾回收算法

垃圾标记阶段 对象存活判断&#xff1a;在堆里存放着几乎所有的Java对象实例&#xff0c;在GC执行垃圾回收之前&#xff0c;首先需要区分出内存中哪些是存活对象&#xff0c;哪些是已经死亡的对象。只有被标记为己经死亡的对象&#xff0c;GC才会在执行垃圾回收时&#xff0c;…

Python+人工智能基础班(通俗易懂版教学)

文章目录一、环境及工具包的介绍二、Python基本语法三、matplotlib、numpy、pandas实操四、机器学习介绍五、机器学习线性回归线性回归实战准备单因子线性回归实战多因子线性回归实战六、机器学习逻辑回归使用线性回归解决分类任务使用逻辑回归解决分类任务逻辑回归实战&#x…

在小公司工作3年,从事软件测试5年了,才发现自己还是处于“初级“水平,是不是该放弃....

毕业前三年&#xff0c;从早到晚&#xff0c;加班到深夜&#xff0c;一年又一年&#xff0c;直至刚入职场的首个黄金三年过年都去了&#xff0c;而职位却仍在原地踏步。尽管感觉自己努力过&#xff0c;但是实际上&#xff0c;自身的能力从没得到过多少提升。 所以在无数个夜晚…

生成对抗网络 | Python实现StackGAN生成对抗神经网络

生成对抗网络 | Python实现StackGAN生成对抗神经网络 目录 生成对抗网络 | Python实现StackGAN生成对抗神经网络效果一览文章概述环境准备程序设计参考资料效果一览 文章概述 生成对抗网络 | Python实现StackGAN生成对抗神经网络 环境准备 python 2.7 TensorFlow 0.12 prettyte…

Java 多线程

多线程实现方式Thread类MyThread类继承了Thread类MyThread thread new MyThread1("窗口1");thread.start();Runnable接口自定义一个MyRunnable类来实现Runnable接口&#xff0c;在MyRunnable类中重写run&#xff08;&#xff09;方法&#xff0c;创建Thread对象&…

I.MX6ULL_Linux_驱动篇(32) 设备树GPIO驱动

在前面章节中&#xff0c;我们直接在驱动文件 newchrled.c 中定义有关寄存器物理地址&#xff0c;然后使用 io_remap 函数进行内存映射&#xff0c;得到对应的虚拟地址&#xff0c;最后操作寄存 器对应的虚拟地址完成对 GPIO 的初始化。本章我们使用设备树来向 Linux 内核传递相…

劝退还是坚守?计算机视觉行业综述

劝退还是坚守&#xff1f;计算机视觉行业综述 1 从炙手可热到充满争议 计算机视觉&#xff08;Computer Vision&#xff0c;简写为CV&#xff09;是一门研究如何让计算机从图像或图像序列中获取信息并 理解其信息的学科&#xff0c;其主要目的在于从图像或图像序列中提取对世…

基于51单片机AT89C51的小型音乐喷泉控制系统设计

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;单片机小喷泉 获取完整无水印论文报告&#xff08;内含电路原理图和程序&#xff09; 根据目前音乐喷泉的发展现状&#xff0c;介绍了一个以AT89C51单片机为核心的小型音乐喷泉控制系统。给出了一个简洁的单片机控制电路&a…

Java_Spring:9. 基于 XML 的 AOP 配置

目录 1 环境搭建 1.1 第一步&#xff1a;准备必要的代码 1.2 第二步&#xff1a;拷贝必备的 jar 包到工程的 lib 目录 1.3 第三步&#xff1a;创建 spring 的配置文件并导入约束 1.4 第四步&#xff1a;配置 spring 的 ioc 1.5 第五步&#xff1a;抽取公共代码制作成通知 …

数据结构与算法笔记--数据结构与算法基本知识

目录 1--数据结构 2--算法 3--算法分析 4--实例1&#xff1a;普通算法与秦九韶算法的运算效率比较 5--实例2&#xff1a;最大子列和问题 5-1--暴力求解法 5-2--分而治之 5-3--动态规划 5-4--完整代码 1--数据结构 定义&#xff1a;所有数据元素以及数据元素之间的关系…

JS手写Promise(详细过程)

PS&#xff1a;JS手写Promise方法的整理在下一篇文章 手写Promise的API(resolve,reject,then,catch,finally,all)_Eric加油学&#xff01;的博客-CSDN博客 1、基础版Promise 首先&#xff0c;通过一个简单的Promise例子回顾其使用 const promise new Promise((resolve, rej…

为什么诚信是项目管理的关键部分?

由于有许多需要指导的活动部件和风险&#xff0c;管理一个新项目可能是一项具有挑战性的工作。在一些对质量有着严格要求的行业&#xff0c;项目结构、设定目标、跟踪状态、风险管理和资源管理等项目管理原则尤为重要&#xff0c;而领导这项工作的是诚信。那么&#xff0c;究竟…

IP 归属用 Ip2region 就够了

文章目录Ip2region 简介是什么特性支持的编程语言案例实操依赖获取IP输入流转化解析IP测试抖音、微博、小红书等各平台相继上线" 网络用户IP地址显示功能"&#xff0c; 境外显示 国家&#xff0c; 境内显示到 省市&#xff0c;且该功能无法关闭&#xff0c;IP地址为强…

【新2023Q2模拟题JAVA】华为OD机试 - 分苹果

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:分苹果 题目 AB两个人把苹果…

第16章_变量、流程控制与游标

第16章_变量、流程控制与游标 &#x1f3e0;个人主页&#xff1a;shark-Gao &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是shark-Gao&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f389;目前状况&#xff1a;23届毕业生&#xf…

ClickHouse学习笔记(三):MergeTree 原理解析

文章目录1、简介2、MergeTree 创建方式与存储结构2.1、MergeTree 的创建方式2.2、MergeTree 的存储结构3、MergeTree 数据分区3.1、分区目录的命名规则3.2、分区目录合并过程4、一级索引4.1、索引粒度4.2、索引生成4.3、索引查询5、二级索引6、数据存储7、数据标记8、协同总结8…

BootStrap4:栅格系统

1、container容器 container&#xff1a;固定宽度的容器container-fluid&#xff1a;响应式容器 2、栅格选项 Bootstrap4 总共有五个栅格等级&#xff0c;每个响应式分界点隔出一个等级 Ps&#xff1a;.row上带有margin-left: -15px;margin-right: -15px;属性&#xff0c;你…

【22年蓝桥杯】十三届蓝桥杯真题JavaB组解析+代码(带你复习知识点)(一)

试题 A: 星期计算 【填空题】 答案&#xff1a;7 解析&#xff1a;直接对所给数进行取余&#xff0c;然后直接再加6&#xff08;注意&#xff1a;不能直接让20^226再对7进行取余操作&#xff0c;这是不对的&#xff0c;这个6可以看成已经取余过了。&#xff09; 直接取余的话可…
最新文章