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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    mysql 远程登陆不上
    hdu 5339 Untitled【搜索】
    SqlServer 书目
    passwordauthentication yes
    oracle 11g RAC ocfs2
    Oracle 11g RAC database on ASM, ACFS or OCFS2
    CentOS ips bonding
    Oracle 11g RAC features
    openStack 王者归来之 trivial matters
    openstack windows 2008 img
  • 原文地址:https://www.cnblogs.com/libera/p/10427540.html
Copyright © 2011-2022 走看看