首页 > 其他分享 >Composer命令全解析

Composer命令全解析

时间:2023-04-11 09:46:41浏览次数:37  
标签:https vendor Composer -- dev 命令 composer PSR 解析

常用命令
镜像

# 配置中国镜像
composer config -g repo.packagist composer https://packagist.phpcomposer.com
# 配置其他厂商镜像
# 阿里云 (好像说停用了)
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
# 腾讯
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/
# 华为
composer config -g repo.packagist composer https://repo.huaweicloud.com/repository/php/
# 解除镜像
composer config -g --unset repos.packagist
项目

# 搜索项目
composer search ThinkPHP
# 创建项目
composer create-project topthink/ThinkPHP=5.1.* ./tp5
# 安装扩展
composer require laravel/laravel ">=5.5"
# 移除扩展
composer remove laravel/laravel
生产最佳实践

# 转换 PSR-0/4 autoloading 到 classmap 获得更快的载入速度,禁用开发者模式
composer dump-autoload -o --no-dev
自动加载 autoload
目前支持四种自动加载方式:

PSR-0
PSR-0 规范是 PHP5.2 之前的一种命名空间映射规范,它规定命名空间与文件路径的对应关系如下

命名空间中的每个下划线字符(_)都会被转换成目录分隔符(/);
命名空间中的每个命名空间分隔符(\)都会被转换成目录分隔符(/);
命名空间中的首字母和下划线字符都会被转换成目录名和文件名中的小写字母;
每个类的文件名必须与类名完全一致,包括大小写。
"psr-0" : {
"Foo\\" : "psr0src/",
#
"Foo_Bar_" : "psr0src/"
},
composer install/update 之后,PSR-0 引用全部合并到 vendor/composer/autoload_namespaces.php
PSR-4
PSR-4 规范是较新的一种命名空间映射规范,它与 PSR-0 规范的区别在于:

命名空间中的下划线字符不再被特殊处理,只有命名空间分隔符(\)会被转换成目录分隔符(/);
命名空间中的首字母和下划线字符不再被强制转换成小写字母;
类的文件名与类名可以不完全一致,但必须满足相对文件路径和类名的对应关系
"psr-4": {
#查找Afishpapa\Httptool\Http类时的路径为src/Http.php
"Afishpapa\\Httptool\\": "src/"
#可以在src/和lib/ 下面找 Monolog命名空间下的类
"psr-4": { "Monolog\\": ["src/", "lib/"] }
#所有命名空间都来src/目录下找
"" : "src/"
}
composer install/update 之后,PSR-4 引用全部合并到 vendor/composer/automoad_psr4.php 中。
return array(
'Afishpapa\\Httptool\\' => array($baseDir . '/src'),
);
Classmap
composer install/update 之后,PSR-4 引用全部合并到 vendor/composer/autoload_classmap.php 中。
你可以用 classmap 生成支持支持自定义加载的不遵循 PSR-0/4 规范的类库。

Files
通常作为函数库的载入方式(而非类库)。
{
"autoload": {
"files": ["src/MyLibrary/functions.php"]
}
}
全局配置
-v : 增加消息的详细程度,正常输出
-vv : 增加消息的详细程度,更加详细得输出
-vvv : 增加消息的详细程度,debug用
-h : 显示帮助
-q : 不要显示任何信息
-n : 不要问任何交互问题
-d : 设置工作目录
--ansi: 强制输出 ANSI 编码
--no-ansi: 禁用 ANSI 编码
--version (-V): 展示所有应用版本
--profile: 展示时间和内存信息
常用配置
--prefer-install: 默认值为dist
dist: 检查本地缓存压缩包,如果有直接复制到vendor目录,如果本地缓存没有,则去远程仓库下载压缩包,如果远程仓库没有提供压缩包,则尝试从github中安装包,并且删除.git版本信息,总之,dist能够快速地下载并安装依赖包,适用于大部分生产环境。
source: 直接从github中下载源码,保留.git信息,如果您需要对包进行自定义修改或者需要对其进行特殊的构建过程,则应该使用 source。
auto:2.1版本后已弃用

-o: 生成自动加载器文件的优化版本,以加快类加载速度。

-a: 默认情况下,Composer 会根据 composer.json 中的 PSR-4 和 PSR-0 配置来生成自动加载器, 使用 --classmap-authoritative 选项可以让 Composer 忽略 PSR-4 和 PSR-0 配置,而直接根据类文件生成一个类映射表(class map),并将其作为自动加载器的唯一来源。需要注意的是,使用 --classmap-authoritative 选项可能会导致一些问题,比如在添加新的类文件时需要重新生成类映射表,否则新添加的类无法被自动加载器加载。因此,建议在开发环境中使用这个选项来提高性能,但在生产环境中不要使用,以免出现问题。

--dry-run: 执行安装过程的模拟运行,不会实际下载或安装任何软件包。

--dev: 安装开发依赖项,包括测试框架和调试工具等。
composer init
以交互方式初始化 composer

--name: 包名,格式为作者/名称,比如monolog/monolog
--description: 简短描述
--author: 作者名
--type: 包的安装类型,默认library
library : 它会简单的将文件复制到 vendor 目录
project : 当前包是一个项目,而不是一个库
metapackage : 一个空的包,包含依赖并且需要触发依赖的安装,这将不会对系统写入额外的文件。
composer-plugin : 它有一个自定义安装类型,可以为其它包提供一个 installler。
--homepage: 官网首页
--require: 引入包,格式为 包:版本 foo/bar:1.0.0
--require-dev: 开发用的组件
-s : 最小稳定性值 dev stable
--license (-l): 许可证
--repository: 指定一个或多个 Composer 仓库
-a : 添加一个autoload.psr-4的对象到composer.json
composer install
如果存在 composer.lock 文件,它会从此文件读取依赖版本,这确保了该库的每个使用者都能得到相同的依赖版本。
如果不存在 composer.lock 文件,它会从 composer.json 文件读取依赖版本,并把其安装到 vendor 目录下。

如果没有 composer.lock 文件,composer 将在处理完依赖关系后创建它。

composer require
添加一个包到 composer.json 文件,如果没有 composer.json 就创建一个

# 该命令会安装两个不同的软件包
# vendor/package:2.* : 版本号以 2. 开头,后面跟着任何版本号。
# vendor/package2:dev-master : 使用 dev-master 分支。这意味着它将安装该分支的最新版本,通常是开发版本,不属于正式发布。
composer require "vendor/package:2.*" vendor/package2:dev-master
composer update
获取依赖的最新版本

# 只更新这两个包vendor/package vendor/package2
composer update vendor/package vendor/package2

# 更新符合正则匹配的包
composer update "vendor/*"

# 更新依赖包到指定版本,需符合composer.json的约束
composer update --with vendor/package:2.0.1
composer remove
移除依赖包

# 移除这两个包
composer remove vendor/package vendor/package2
composer reinstall
重装包,如果不小心改了包文件,可以使用重装命令恢复

# 重装两个包
composer reinstall acme/foo acme/bar

# 重装正则匹配的包
composer.phar reinstall "acme/*"
composer check-platform-reqs
用于检查您的 PHP 和扩展版本是否符合已安装包的平台要求

--lock: 仅从锁定文件中检查要求,而不是从已安装的包中检查要求。
--no-dev: 不检查 require-dev 包要求。
-f: 格式
> composer check-platform-reqs
Checking platform requirements for packages in the vendor dir
ext-json 1.7.0 success
ext-libxml 7.3.4 success
ext-mbstring 7.3.4 success
ext-openssl 7.3.4 success
ext-simplexml 7.3.4 success
php 7.3.4 success
composer global
global 允许您全局运行其他命令,如 install、remove、require,update

composer search monolog
搜索依赖包

-N : 只搜包名
-O : 只搜作者
-t : 搜全称
λ composer search monolog
monolog/monolog Sends your logs to files, sockets, inboxes, databases and various web services
symfony/monolog-bundle Symfony MonologBundle
symfony/monolog-bridge Provides integration for Monolog with various Symfony components
...
composer show / composer info
列出所有可用的包信息

λ composer show
defuse/php-encryption v2.3.1 Secure PHP Encryption Library
laminas/laminas-diactoros 2.5.0 PSR HTTP Message implementations
laminas/laminas-zendframework-bridge 1.4.1 Alias legacy ZF class names to Laminas Project equivalents.
...
列出单个包的详情

λ composer show slim/slim
name : slim/slim
descrip. : Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs
keywords : api, framework, micro, router
versions : * 3.12.4
type : library
license : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText
homepage : https://slimframework.com
source : [git] https://github.com/slimphp/Slim.git ce3cb65a06325fc9fe3d0223f2ae23113a767304
dist : [zip] https://api.github.com/repos/slimphp/Slim/zipball/ce3cb65a06325fc9fe3d0223f2ae23113a767304 ce3cb65a06325fc9fe3d0223f2ae23113a767304
path : D:\workspace\oauth\examples\vendor\slim\slim
names : slim/slim, psr/http-message-implementation

support
issues : https://github.com/slimphp/Slim/issues
source : https://github.com/slimphp/Slim/tree/3.12.4

autoload
psr-4
Slim\ => Slim

requires
ext-json *
ext-libxml *
ext-simplexml *
nikic/fast-route ^1.0
php >=5.5.0
pimple/pimple ^3.0
psr/container ^1.0
psr/http-message ^1.0

requires (dev)
phpunit/phpunit ^4.0
squizlabs/php_codesniffer ^3.6.0

provides
psr/http-message-implementation 1.0
composer outdated
列出所有安装包是否可以更新

λ composer outdated
Direct dependencies required in composer.json:
laminas/laminas-diactoros 2.5.0 2.14.0 PSR HTTP Message implementations
league/event 2.2.0 3.0.1 Event package
slim/slim 3.12.4 4.9.0 Slim is a PHP micro framework that helps you quickly write simple yet po...

Transitive dependencies not required in composer.json:
psr/container 1.1.1 2.0.1 Common Container Interface (PHP FIG PSR-11)
composer browse / composer home
浏览器直接打开这个包的 github 仓库

# 打开这个包的官网
composer browser -H slim/slim
# 打印slim的github仓库链接
composer browser -s slim/slim
composer suggests
给你人生路上一点建议

λ composer suggests
lcobucci/jwt suggests:
- lcobucci/clock: *

1 additional suggestions by transitive dependencies can be shown with --all
composer fund
给出你所用的包的捐赠链接

composer depends / why
composer depends 命令用于显示一个包的依赖关系树。如果你要删除一个包之前,可以用这个命令先看看它上面是不是有人

> composer depends psr/log -t

psr/log 1.1.4 Common interface for logging libraries
├──composer/composer 2.4.x-dev (requires psr/log ^1.0 || ^2.0 || ^3.0)
├──composer/composer dev-main (requires psr/log ^1.0 || ^2.0 || ^3.0)
├──composer/xdebug-handler 3.0.3 (requires psr/log ^1 || ^2 || ^3)
│ ├──composer/composer 2.4.x-dev (requires composer/xdebug-handler ^2.0.2 || ^3.0.3)
│ └──composer/composer dev-main (requires composer/xdebug-handler ^2.0.2 || ^3.0.3)
└──symfony/console v5.4.11 (conflicts psr/log >=3) (circular dependency aborted here)
composer prohibits / why-not
告诉您哪些包在阻止你想安装的包,并给出理由

composer validate
如果你手动修改 composer.json, 当准备提交 composer.json 文件之前,最好执行这条命令检查一下

composer status
如果你手动修改过一个包,这个包安装来源是 source, 则可以用这个命令看你本地修改记录,相当于 git status

composer self-update / selfupdate
composer 程序自更新

# 更新到指定版本
composer self-update 2.4.0-RC1
composer config
修改当前项目或者全局的配置

-g : 修改全局配置文件
--unset: 移除配置
-l: 展示全部配置信息,如果加上-g,就显示全局的
--absolute: *-dir的配置返回绝对路径
--append: 追加一个镜像时,设置比较低的优先级
--source: 展示config从哪里加载的
# 添加一个测试foo到repositories
composer config repo.foo vcs https://github.com/foo/bar
# 添加一个阿里云镜像到repositories(阿里云镜像凉了)
composer config repo.packagist composer https://mirrors.aliyun.com/composer/

#效果如下
"repositories": {
"packagist": {
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
},
"foo": {
"type": "vcs",
"url": "https://github.com/foo/bar"
}
}

# 修改extra配置
composer config extra.foo.bar value
composer config --json extra.foo.bar '{"baz": true, "qux": []}'
composer create-project
创建项目 / 包,相当于 git clone + composer install

composer create-project doctrine/orm path "2.2.*"
composer dump-autoload
当修改了包里面的类名,或者增加删除文件之后,需要执行这个命令

# -o 选项是为了生产环境中的性能优化,
composer dump-autoload -o
# -a 选项则是为了开发环境中的重新生成类映射。
composer dump-autoload -a
composer clear-cache / clearcache / cc
清理本地包缓存

archive
从远程下载一个包,并打包成 zip/tar 压缩包

php composer.phar archive vendor/package 2.0.21 --format=zip
run-script / run
你可以运行此命令来手动执行,只需要指定脚本的名称,可选的 --no-dev 参数允许你禁用开发者模式。

{
"scripts": {
"post-update-cmd": "MyVendor\\MyClass::postUpdate",
"post-package-install": [
"MyVendor\\MyClass::postPackageInstall"
],
"post-install-cmd": [
"MyVendor\\MyClass::warmCache",
"phpunit -c app/"
]
}
}
# 将会运行所有 post-install-cmd 事件下定义的脚本。
`composer run-script post-install-cmd`
diagnose
可以用来检查当前 Composer 环境是否符合最佳实践,包括 PHP 环境、Composer 配置等。

audit
检查当前项目的依赖项是否存在已知的安全漏洞。

help
使用 help 可以获取指定命令的帮助信息。

php composer.phar help install

https://learnku.com/articles/76463

标签:https,vendor,Composer,--,dev,命令,composer,PSR,解析
From: https://www.cnblogs.com/codebuglife/p/17305162.html

相关文章

  • H264 SEI 解析简介(转)
    作者:欧拉回路链接:https://www.jianshu.com/p/7b1307b13689来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。SEI简介SEI即补充增强信息(SupplementalEnhancementInformation),它提供了向视频码流中加入额外信息的方法,是H.264/H.265这些视频压缩标准......
  • 每日学习记录20230308_继续PNAS代码解析
    20230308:PNSA代码解析PNAS和YF代码比较特征PNASYF输入数据DDADIA算法线性回归LASSOFA数据Ifwewanttoissueapackage,whatimprovementshouldwedounderlieYF’sprogram?BothDDAandDIAdataaresupported.achangePNAS......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-智能聊天机器人从0到1快速入门——官网推荐的
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • 应急响应常用命令
    应急响应常用命令windows系统查看资源占用情况taskmgr查看当前系统会话queryuser踢出用户登录lusrmgr.msc查看本地用户和组lusrmgr.msc查看本地管理员组是否存在非法用户netlocalgroupadministrators使用Wmic查看系统统中是否有非法用户wmicUserAccountg......
  • 探索VMware ESXI CLI常用命令
    目录【常用命令】【关于esxi常用命令总结】【esxcli命令探究】ESXi命令行获取帮助的方法为<命令关键字--help>,常用的命令一般都是以esxcli开头,如果忘记命令可以使用帮助:esxcli--help;输出如下:[root@localhost:~]esxcli--helpUsage:esxcli[options]{namespace}+{......
  • 渗透常用命令
    渗透常用命令nmap扫描TARGET=10.10.11.183&&nmap-p$(nmap-p---min-rate=1000-T4$TARGET-Pn|grep^[0-9]|cut-d'/'-f1|tr'\n'','|seds/,$//)-sC-sV-Pn-vvv$TARGET-oNnmap_tcp_all.nmapnmap-sV-T4-v-P010......
  • kettle从入门到精通 第十一课 kettle javascript 解析json数组
    1、json步骤虽然可以解析json数组,但是不够灵活。通过javascript步骤来解析json数组比较灵活,且可以按照需要组装数据流转到下个步骤。1)步骤名称:可以自定义2)TransformScripts:当前步骤编写的javascript脚本3)TransformConstants:重新定义的静态常量,用于控制数据行发生的情况。您必......
  • Windows下面使用bat命令打开截图工具
    在Windows操作系统中,可以使用内置的截图工具SnippingTool进行截图。可以在批处理文件中使用start命令打开SnippingTool。以下是示例代码:start""/w"C:\Windows\System32\SnippingTool.exe"其中,start命令用于打开一个程序,“”代表窗口标题(此处为空),/w选项代表等待......
  • flask框架05 信号 flask-script命令 sqlalchemy创建操作数据表
    今日内容详细目录今日内容详细1信号1.1django信号2flask-script3sqlalchemy快速使用4sqlalchemy介绍和快速使用4.1sqlalchemy介绍和快速使用5创建操作数据表1信号#Flask框架中的信号基于blinker(安装这个模块),其主要就是让开发者可是在flask请求过程中定制一些用户行为......
  • H264码流格式解析及RTP打包规则整理(转)
    原文链接:https://blog.csdn.net/luoyaxing0812/article/details/111352155版权声明:本文为CSDN博主「空谷_幽兰」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。1、H264的结构图  2、H264的编码分层H.264原始码流(裸流)是由一个接一个NALU组......