composer使用笔记

2016-11-02

安装:

windows下安装

下载:https://getcomposer.org/Composer-Setup.exe

直接执行安装,它会查找系统环境变量php所在位置,然后自动安装。

Linux下安装

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

Docker方式执行

官方仓库:https://hub.docker.com/_/composer

docker pull composer
docker run --rm --interactive --tty --volume $PWD:/app composer create-project flarum/flarum .

# 加上代理(若SSL失败可以重试几次)
docker run --rm --interactive --tty -e HTTP_PROXY=http://192.168.50.1:50001 -e HTTPS_PROXY=http://192.168.50.1:50001 --volume $PWD:/app composer create-project flarum/flarum .

flarum论坛

安装中文包

composer require flarum-lang/chinese-simplified

单点登录

composer require maicol07/flarum-ext-sso

上传文件

composer require fof/upload

图链接自动显示

composer require fof/formatting

header上的导航栏

composer require fof/links

二次开发

https://mithril.js.org/

https://docs.flarum.org/zh/extend/frontend

# cd into your flarum folder
mkdir packages & cd packages
npx @friendsofflarum/create-flarum-extension web3address
cd packages/web3address
cd js
yarn && yarn dev

https://juejin.cn/post/7111517181460480014 https://www.sitepoint.com/writing-a-flarum-extension-building-a-custom-field/

使用

1.在项目目录下新建composer.json文件:

{
    "require": {
        "elasticsearch/elasticsearch": "~1.0"
    }
}

2.命令行进入该目录执行:

composer update

composer 常用命令

composer list  显示所有命令

composer show  显示所有包信息

composer install  在 composer.json 配置中添加依赖库之后运行此命令安装

composer install --ignore-platform-req=ext-redis --ignore-platform-req=ext-mongodb  # 安装时排除指定扩展,缺扩展时防止安装报错

composer create-project laravel/laravel Laravel –prefer-dist "5.1.*"  创建项目

composer search packagename  搜索包

composer update  更新所有包

composer update elasticsearch/elasticsearch  更新指定包(通过修改composer.json文件中的版本号,再用该条命令可升级对应包的版本)

composer remove elasticsearch/elasticsearch  移除指定的包

composer require elasticsearch/elasticsearch  添加指定包

composer require elasticsearch/elasticsearch:1.19  添加指定包和版本

composer require elasticsearch/elasticsearch=1.19

composer require elasticsearch/elasticsearch 1.19

所有支持的命令

  about    显示关于composer的简短信息。
  archive  创建这个作曲家软件包的存档。
  browse   在浏览器中打开软件包的存储库 URL 或主页。
  cc       清除composer的内部软件包缓存。
  check-platform-reqs 检查是否满足平台要求。
  clear-cache  清除作曲家的内部软件包缓存。
  clearcache   清除作曲家的内部软件包缓存。
  config   设置配置选项。
  create-project      从包中创建新的项目到给定的目录中。
  depends  显示哪些包会导致给定包被安装。
  diagnose 诊断系统以识别常见错误。
  dump-autoload 转储自动加载器。
  dumpautoload 转储自动加载器。
  exec     执行销售的二进制文件/脚本。
  fund     了解如何为维护你的依赖关系提供资金。
  global   允许在全局作曲家目录($COMPOSER_HOME)中运行命令。
  help     显示命令的帮助。
  home     在浏览器中打开软件包的仓库 URL 或主页。
  i        从 composer.lock 文件中安装项目依赖关系(如果存在),或者使用 composer.json。
  info     显示软件包的信息。
  init     在当前目录下创建一个基本的 composer.json 文件。
  install  如果存在的话,从 composer.lock 文件中安装项目依赖关系,或者回到 composer.json。
  licenses 显示依赖项的许可证信息。
  list     列出命令
  outdated 显示有更新的已安装软件包的列表,包括其最新版本。
  prohibits 显示哪些软件包无法安装。
  remove   从 require 或 require-dev 中移除一个包。
  require  将所需的包添加到 composer.json 中并安装它们。
  run      运行 composer.json 中定义的脚本。
  run-script 运行 composer.json 中定义的脚本。
  search   搜索软件包。
  self-update 将 composer.phar 更新为最新版本。
  selfupdate  将 composer.phar 更新到最新版本。
  show     显示软件包的信息。
  status   显示本地修改的软件包列表。
  suggests 显示软件包的建议。
  u        根据 composer.json 将你的依赖项升级到最新版本,并更新 composer.lock 文件。
  update   根据 composer.json 将你的依赖项升级到最新版本,并更新 composer.lock 文件。
  upgrade  根据 composer.json 将你的依赖项升级到最新版本,并更新 composer.lock 文件。
  validate 验证 composer.json 和 composer.lock。
  why      显示哪些包导致给定包被安装。
  why-not  显示哪些包会阻止给定包的安装。

使用国内源,加快更新速度

1.修改 composer 的全局配置文件(推荐方式)

打开命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令:

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • 阿里云镜像源 https://mirrors.aliyun.com/composer/

  • 华为云 https://mirrors.huaweicloud.com/repository/php/

  • 腾讯云 https://mirrors.cloud.tencent.com/composer/

  • 上海交通大学 https://packagist.mirrors.sjtug.sjtu.edu.cn/

恢复到官方源:

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

2.修改当前项目的 composer.json 配置文件:

打开命令行窗口(windows用户)或控制台(Linux、Mac 用户),进入你的项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:

composer config repo.packagist composer https://packagist.phpcomposer.com

上述命令将会在当前项目中的 composer.json 文件的末尾自动添加镜像的配置信息(你也可以自己手工添加):

"repositories": {
    "packagist": {
        "type": "composer",
        "url": "https://packagist.phpcomposer.com"
    }
}

更新composer自身

composer selfupdate

查看composer版本:

composer --version

回滚版本:

composer self-update --rollback

中文文档:http://www.phpcomposer.com/

显式设置目标 PHP 版本来解决升级模块提示PHP版本不一致问题

composer.json文件中添加config

{
    "require": {
        "mongodb/mongodb": "^1.8"
    },
    "config": {
        "platform": {
            "php": "7.1.0"
        }
    }
}

发布包

发布包注意事项

1.src目录下的文件名和类名保持一致。

2.提交到git后,要创建一个release Tags标签,比如 v1.7,再去Packagist手动update。

3.在Packagist提交发布地址的时候,填入的是GitHub的地址,注意不是.git结尾的这种(否则会报CSRF错误)。

4.发布完包后Packagist的国内索引需要一定时间才能更新,所以不能马上通过composer require更新包。(可以通过切换到官方源,并清除本地缓存 composer clearcache 来处理)

5.如果跨越大版本号更新,require是无法满足的。(可以先remove再require)

6.命名空间和包名是区分大小写的。

7.注意composer.json文件里autoload psr-4 命名空间前缀必须以\\结尾,而且这里的命名空间要与类中namespace对应。否则class_exists()也找不到类的。

8.composer.json里的项目名称必须全部小写。