Composer PHP的包管理器

来源:互联网 发布:圆形扇子淘宝网 编辑:程序博客网 时间:2024/05/23 22:37

Composer PHP的包管理器


Python的pip工具,Node的npm,Javascript的bower,PHP的composer作用都是一样的,管理第三方资源;不用手动管理,需要的时候composer install 或者composer require 就搞定了,不用再自己include文件或者自己写autoloader了;

安装

windows:

Composer.exe

Linux:

curl -sS https://getcomposer.org/installer | phpmv composer.phar /usr/local/bin/composer
常用命令
  1. composer init 初始化一个包

    –name: 包的名称。

    –description: 包的描述。

    –author: 包的作者。

    –homepage: 包的主页。

    –require: 需要依赖的其它包,必须要有一个版本约束。并且应该遵循 foo/bar:1.0.0 这样的格式。

    –require-dev: 开发版的依赖包,内容格式与 –require 相同。

    –stability (-s): minimum-stability 字段的值。

  2. composer install 安装包

    这个命令会根据composer.json文件中的声明的依赖关系安装所需要的包,但是当该目录下存在composer.lock文件时,会从改文件读取依赖关系而不是composer.json,因此

    当我们安装我们所需要的依赖失败时,更新或者删除composer.lock文件;

    –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 可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。

  3. composer update 获取依赖的最新版本,并且更新composer.lock文件

    也可以只更新其中某个包或者某几个,例如composer update username1/package1 username2/package2

    –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 同时更新白名单内包的依赖关系,这将进行递归更新。

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

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

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

    –prefer-source: 当有可用的包时,从 source 安装。

    –prefer-dist: 当有可用的包时,从 dist 安装。

    –dev: 安装 require-dev 字段中列出的包。

    –no-update: 禁用依赖关系的自动更新。

    –no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。

    –update-with-dependencies 一并更新新装包的依赖。

  5. 全局执行global

    有时候我们需要全局安装一个包使所有的项目都能使用,因此就可以了在require 或者 install的时候使用global参数了

    例如:composer global require “fxp/composer-asset-plugin:~1.1.1”

  6. 搜索命令composer search 在packagist.org搜索包

    例如:composer search monolog

  7. 查看可用的包composer show 用于列出要查看的包的详细信息

    例如: composer show laravel/laravel

    name : laravel/laravel

    descrip. : The Laravel Framework.

    keywords : framework, laravel

    versions : dev-master, v5.2.0, 5.1.x-dev, v5.1.11, v5.1.4, v5.1.3, v5.1.1, v5.1.0, 5.0.x-dev, v5.0.22, v5.0.16, v5.0.1, v5.0.0,

    type : project

    license : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText

    source : [git] https://github.com/laravel/laravel.git 01e3d8f28840909f2ac3d0cd32c4989d8e28f064

    dist : [zip] https://api.github.com/repos/laravel/laravel/zipball/01e3d8f28840909f2ac3d0cd32c4989d8e28f064 01e3d8f28840909f2ac3d0cd32c4989d8e28f064

    names : laravel/laravel

    …………..

    –installed (-i): 列出已安装的依赖包。

    –platform (-p): 仅列出平台软件包(PHP 与它的扩展)。

    –self (-s): 仅列出当前项目信息。

  8. 依赖性检测 composer depends

    php composer.phar depends –link-type=require monolog/monolog

    –link-type: 检测的类型,默认为 require 也可以是 require-dev。

  9. 自我更新 composer self-update

    php composer.phar self-update

    –rollback (-r): 回滚到你已经安装的最后一个版本。\

    –clean-backups: 在更新过程中删除旧的备份,这使得更新过后的当前版本是唯一可用的备份。

  10. 查看配置 composer config

    composer 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 参数一起使用。

  11. 创建项目 create-project

    compposer create-project laravel/laravel dev

    –repository-url: 提供一个自定义的储存库来搜索包,这将被用来代替 packagist.org。可以是一个指向 composer 资源库的 HTTP URL,或者是指向某个 packages.json 文件的本地路径。

    –stability (-s): 资源包的最低稳定版本,默认为 stable。

    –prefer-source: 当有可用的包时,从 source 安装。

    –prefer-dist: 当有可用的包时,从 dist 安装。

    –dev: 安装 require-dev 字段中列出的包。

    –no-install: 禁止安装包的依赖。

    –no-plugins: 禁用 plugins。

    –no-scripts: 禁止在根资源包中定义的脚本执行。

    –no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。

    –keep-vcs: 创建时跳过缺失的 VCS 。如果你在非交互模式下运行创建命令,这将是非常有用的。

  12. 有效性检测 composer validate 检查composer.json文件是否有效,在我们创建自己的包的时候将会变得很有用

  13. 打印自动加载索引 composer dump-autoload

    –optimize (-o): 转换 PSR-0/4 autoloading 到 classmap 获得更快的载入速度。这特别适用于生产环境,但可能需要一些时间来运行,因此它目前不是默认设置。

    –no-dev: 禁用 autoload-dev 规则。

  14. 查看许可协议 composer licenses

  15. 执行脚本 composer run-script

  16. 诊断 composer diagnose

  17. 归档 composer archive

    –format (-f): 指定归档格式:tar 或 zip(默认为 tar)。

    –dir: 指定归档存放的目录(默认为当前目录)。

参考文章

composer中文官网

composer 官网

发布composer包

packagist

composer 自动加载原理实现

0 0