zoukankan      html  css  js  c++  java
  • composer 基本概念与常用命令总结

    composer 基本概念与常用命令总结

    基本概念

    本文的内容是总结过往学习composer的一些心得,主要包括composer的基本概念与常用命令。本质上,composer是一个php依赖管理的软件,主要用来管理php的外部依赖并处理外部依赖之间的依赖关系。其实为了避免重复造轮子,很多编程语言都有自己的依赖管理工具,比如Java的maven,Python的pip和node的npm等等。熟练掌握composer,开发项目可以事半功倍。

    软件安装

    主要参考Laravel的composer中国全量镜像下载说明,Linux直接打开终端执行以下命令。Windows环境建议使用git-bash执行命令。

    linux/mac安装

    wget https://dl.laravel-china.org/composer.phar -O /usr/local/bin/composer
    chmod a+x /usr/local/bin/composer
    

    如遇权限不足,可添加 sudo

    windows

    1. 直接下载 composer.phar,地址:https://dl.laravel-china.org/composer.phar
    2. 把下载的 composer.phar 放到 PHP 安装目录
    3. 新建 composer.bat, 添加如下内容,并保存:
    @php "%~dp0composer.phar" %*
    

    最后可以通过composer --version查看是否有正确的输出,可以通过composer selfupdate进行软件更新。

    配置镜像

    鉴于国外镜像源的连接质量比较差,所以有必要将镜像源设置到国内。推荐使用Laravel提供的Composer 中国全量镜像。此外还有Packagist/Composer中国全量镜像

    如何使用

    请尽可能用比较新的 Composer 版本。

    使用 Composer 镜像加速有两种选项:

    • 选项一:全局配置,这样所有项目都能惠及(推荐);
    • 选项二:单独项目配置;

    选项一、全局配置(推荐)

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

    选项二、单独使用

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

    取消镜像

    composer config -g --unset repos.packagist
    

    常用命令

    内容主要参考官方中文的cli终端命令文档

    全局参数

    下列参数可与每一个命令结合使用:

    --verbose (-v): 增加反馈信息的详细度。
    -v 表示正常输出。
    -vv 表示更详细的输出。
    -vvv 则是为了 debug。
    --help (-h): 显示帮助信息。
    --quiet (-q): 禁止输出任何信息。
    --no-interaction (-n): 不要询问任何交互问题。
    --working-dir (-d): 如果指定的话,使用给定的目录作为工作目录。
    --profile: 显示时间和内存使用信息。
    --ansi: 强制 ANSI 输出。
    --no-ansi: 关闭 ANSI 输出。
    --version (-V): 显示当前应用程序的版本信息。
    

    初始化 init

    您运行该命令,它会以交互方式要求您填写一些信息,同时聪明的使用一些默认值。

    composer init
    

    初始化参数

    --name: 包的名称。
    --description: 包的描述。
    --author: 包的作者。
    --homepage: 包的主页。
    --require: 需要依赖的其它包,必须要有一个版本约束。并且应该遵循 foo/bar:1.0.0 这样的格式。
    --require-dev: 开发版的依赖包,内容格式与 --require 相同。
    --stability (-s): minimum-stability 字段的值。
    

    依赖安装 install

    从composer.json中读取依赖版本。并把其安装到 vendor 目录下。

    composer install
    

    如果当前目录下存在 composer.lock 文件,它会从此文件读取依赖版本,而不是根据 composer.json 文件去获取依赖。这确保了该库的每个使用者都能得到相同的依赖版本。

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

    安装-参数

    --prefer-source: 下载包的方式有两种: source 和 dist。对于稳定版本 composer 将默认使用 dist 方式。而 source 表示版本控制源 。如果 --prefer-source 是被启用的,composer 将从 source 安装(如果有的话)。如果想要使用一个 bugfix 到你的项目,这是非常有用的。并且可以直接从本地的版本库直接获取依赖关系。
    --prefer-dist: 与 --prefer-source 相反,composer 将尽可能的从 dist 获取,这将大幅度的加快在 build servers 上的安装。这也是一个回避 git 问题的途径,如果你不清楚如何正确的设置。
    --dry-run: 如果你只是想演示而并非实际安装一个包,你可以运行 --dry-run 命令,它将模拟安装并显示将会发生什么。
    --dev: 安装 require-dev 字段中列出的包(这是一个默认值)。
    --no-dev: 跳过 require-dev 字段中列出的包。
    --no-scripts: 跳过 composer.json 文件中定义的脚本。
    --no-plugins: 关闭 plugins。
    --no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
    --optimize-autoloader (-o): 转换 PSR-0/4 autoloading 到 classmap 可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。
    

    依赖更新 update

    为了获取依赖的最新版本,并且升级 composer.lock 文件,你应该使用 update 命令。

    composer update
    

    这将解决项目的所有依赖,并将确切的版本号写入 composer.lock。

    如果你只是想更新几个包,你可以像这样分别列出它们:

    composer update vendor/package vendor/package2
    

    你还可以使用通配符进行批量更新:

    composer update vendor/*
    

    更新-参数

    --prefer-source: 当有可用的包时,从 source 安装。
    --prefer-dist: 当有可用的包时,从 dist 安装。
    --dry-run: 模拟命令,并没有做实际的操作。
    --dev: 安装 require-dev 字段中列出的包(这是一个默认值)。
    --no-dev: 跳过 require-dev 字段中列出的包。
    --no-scripts: 跳过 composer.json 文件中定义的脚本。
    --no-plugins: 关闭 plugins。
    --no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
    --optimize-autoloader (-o): 转换 PSR-0/4 autoloading 到 classmap 可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。
    --lock: 仅更新 lock 文件的 hash,取消有关 lock 文件过时的警告。
    --with-dependencies 同时更新白名单内包的依赖关系,这将进行递归更新。
    

    申明依赖 require

    require 命令增加新的依赖包到当前目录的 composer.json 文件中

    composer require
    

    在添加或改变依赖时, 修改后的依赖关系将被安装或者更新。

    如果你不希望通过交互来指定依赖包,你可以在这条令中直接指明依赖包。

    composer require vendor/package:2.* vendor/package2:dev-master
    

    参数

    --prefer-source: 当有可用的包时,从 source 安装。
    --prefer-dist: 当有可用的包时,从 dist 安装。
    --dev: 安装 require-dev 字段中列出的包。
    --no-update: 禁用依赖关系的自动更新。
    --no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
    --update-with-dependencies 一并更新新装包的依赖。
    

    自我更新 self-update

    展示依赖 show

    • --installed (-i): 列出已安装的依赖包。
    • --platform (-p): 仅列出平台软件包(PHP 与它的扩展)。
    • --self (-s): 仅列出当前项目信息。

    配置 config

    config [options] [setting-key] [setting-value1] ... [setting-valueN]
    

    setting-key 是一个配置选项的名称,setting-value1 是一个配置的值。可以使用数组作为配置的值(像 github-protocols),多个 setting-value 是允许的。

    参数

    --global (-g): 操作位于 $COMPOSER_HOME/config.json 的全局配置文件。如果不指定该参数,此命令将影响当前项目的 composer.json 文件,或 --file 参数所指向的文件。
    --editor (-e): 使用文本编辑器打开 composer.json 文件。默认情况下始终是打开当前项目的文件。当存在 --global 参数时,将会打开全局 composer.json 文件。
    --unset: 移除由 setting-key 指定名称的配置选项。
    --list (-l): 显示当前配置选项的列表。当存在 --global 参数时,将会显示全局配置选项的列表。
    --file="..." (-f): 在一个指定的文件上操作,而不是 composer.json。注意:不能与 --global 参数一起使用。
    

    更详细的命令请参考官方中文文档

    注意问题

    • 已存在 composer.lock 文件,先删除,再运行 composer install 重新生成。
    • 一般用-vvv来进行调试,以便查看下载状态
    • 如果PHP版本与composr版本不一致,可以使用--ignore-platform-reqs忽略其冲突
    • 如果再Linux中使用root执行composer,会发出警告Composer install Do not run Composer as root/super user!。可以使用一般用户来执行(推荐),或者忽略该警告。
    • 如果Linux中无法写入composer缓存,可以重新设置目录权限。

    本人水平有限,若有不足之处,欢迎指正。

    作者:hiccphp
    出处:https://www.cnblogs.com/libera/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    CLR自定义菜单项(ToolStripItem)
    WinForm停靠控件介绍:WeifenLuo.WinFormsUI.Docking.dll
    D3D11中的设备介绍
    D3D11 Effect状态的设置
    在写游戏时钟类时,应确保时钟的计算是以某个固定的CPU为标准的
    精确获取时间(QueryPerformanceCounter)
    定点数与浮点数
    error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2'
    fpu,mmx以及sse寄存器的少量简介
    灵宝方言(超搞笑)
  • 原文地址:https://www.cnblogs.com/libera/p/10427540.html
Copyright © 2011-2022 走看看