如何使用composer来管理php项目

Composer2019-11-19 06:52:17550条
composer是一个非常流行的PHP包依赖管理工具,已经取代PEAR包管理器,对于PHP开发者来说掌握Composer是必须的.

项目开发过程中,扩展包的引入能够帮助我们快速且强大的开发我们的项目,如js中的node,python中的pip,而php中我们用的就是composer

composer是一个非常流行的PHP包依赖管理工具,已经取代PEAR包管理器,对于PHP开发者来说掌握Composer是必须的。

1. 安装composer

在windows系统下,可直接下载并且运行Composer-Setup.exe,它将安装最新版本的 Composer ,并设置好系统的环境变量,这样你就可以在任何目录下直接使用 composer 命令。 在Linux系统下,可通过以下命令进行安装:

# 下载安装文件
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php执行安装文件
php composer-setup.php
# 删除安装文件
php -r "unlink('composer-setup.php');"
# 将composer.phar移动到/usr/local/bin/下
mv composer.phar /usr/local/bin/composer

2. 使用 Composer

要开始在项目中使用 Composer,只需要一个composer.json文件。该文件包含了项目的依赖和其它的一些元数据。这是一个JSON格式的文件,它允许你定义嵌套结构。 例如,下面是本博客项目的composer.json文件。

{
    "name": "gentlemanwuyu/blog-api",
    "type": "project",
    "description": "博客API项目,使用Laravel8搭建。",
    "keywords": [
        "framework",
        "laravel"
    ],
    "license": "MIT",
    "require": {
        "php": "^7.4",
        "creativeorange/gravatar": "^1.0.20",
        "erusev/parsedown": "^1.7",
        "fideloper/proxy": "^4.2",
        "fruitcake/laravel-cors": "^2.0",
        "guzzlehttp/guzzle": "^7.0.1",
        "laravel/framework": "^8.0",
        "laravel/tinker": "^2.0",
        "league/html-to-markdown": "^4.10",
        "mews/captcha": "^3.2.0",
        "mews/purifier": "^3.3",
        "qiniu/php-sdk": "^7.3"
    },
    "require-dev": {
        "barryvdh/laravel-ide-helper": "^2.8.1",
        "barryvdh/laravel-debugbar": "^3.5",
        "facade/ignition": "^2.3.6",
        "fzaninotto/faker": "^1.9.1",
        "mockery/mockery": "^1.3.1",
        "nunomaduro/collision": "^5.0",
        "phpunit/phpunit": "^9.3"
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ]
    }
}

一般来说,我们只需要在require下加入我们需要添加的扩展包即可,键为包名,值为包的版本,版本约束可以用几个不同的方法来指定:

名称 实例 描述
确切的版本号 1.0.2 你可以指定包的确切版本
范围 >=1.0
>=1.0,<2.0
>=1.0,<1.1|>=1.2
通过使用比较操作符可以指定有效的版本范围。
有效的运算符:>>=<<=!=
你可以定义多个范围,用逗号隔开,这将被视为一个逻辑AND处理。一个管道符号`
通配符 1.0.* 你可以使用通配符*来指定一种模式。
1.0.*>=1.0,<1.1是等效的。
赋值运算符 ~1.2 这对于遵循语义化版本号的项目非常有用。~1.2相当于>=1.2,<2.0

3. Composer命令行工具

composer init

使用者可以在自己的项目下创建composer.json以便定义你项目的依赖包,也可以通过composer init交互式的创建composer.json

composer install

应该是最常用的命令,composer会根据本地的composer.json安装包,将下载的包放入项目下的vendor目录下,同时将安装时候的包版本信息放入到composer.lock,以便锁定版本。 其实在install的时候,假如发现composer.lock版本和目前vendor目录下的代码版本是一致的,则Composer会什么也不做,composer.lock的目的就是让你安心在目前这个版本下工作,而不获取最新版本的包。

composer update

那么如何更新composer.lock以便获取到最新版本的包呢?通过这个命令即可更新最新版本的包。

composer config

全局的配置保存在COMPOSER_HOME/config.json,非全局的配置信息则存储在本项目目录下。

composer create-project

这个命令不常用,但是我觉得还是很重要的,使用普通的install命令是将项目所有的依赖包下载到本项目 vendor目录下.而通过这个命令则是将所有的代码及其依赖的包放到一个目录下,相当于执行了一个git clone命令,一般是包的开发者可能为了修复bug会使用该命令。

composer dumpautoload

当你修改项目下的composer.json的文件,如果只是更新自动加载,不一定要运行composer update命令进行更新,有的时候可以使用该命令来更新自动加载。

4. 配置国内镜像

在国内使用Composer下载特别慢,可以通过配置国内镜像进行加速。可以在全局或单个项目修改镜像仓库地址,推荐使用全局的方式:

  • 修改composer的全局配置文件
    composer config -g repo.packagist composer https://packagist.phpcomposer.com
  • 修改当前项目的composer.json配置文件
    composer config repo.packagist composer https://packagist.phpcomposer.com
评论啦~
暂无评论,快来抢沙发吧!