copmoser是第三方类库管理工具,类似于node.js的npm
安装基本使用参考:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-composer-on-ubuntu-14-04
官方文档:
https://getcomposer.org/doc/
安装:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
版本查看
composer -V
查找library
composer search phpmailer
添加需要的library( 自动生成composer.json )
composer require phpmailer/phpmailer
执行后会下载phpmailer,并生成autoload.php
更新vendor下的依赖库
composer update
更新composer
composer self-update
安装后会生成composer.lock 文件
composer.lock - 锁文件
在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件。这将锁定改项目的特定版本。
请提交你应用程序的 composer.lock (包括 composer.json)到你的版本库中
这是非常重要的,因为 install 命令将会检查锁文件是否存在,如果存在,它将下载指定的版本(忽略 composer.json 文件中的定义)。
这意味着,任何人建立项目都将下载与指定版本完全相同的依赖。你的持续集成服务器、生产环境、你团队中的其他开发人员、每件事、每个人都使用相同的依赖,从而减轻潜在的错误对部署的影响。即使你独自开发项目,在六个月内重新安装项目时,你也可以放心的继续工作,即使从那时起你的依赖已经发布了许多新的版本。
如果不存在 composer.lock 文件,Composer 将读取 composer.json 并创建锁文件。
这意味着如果你的依赖更新了新的版本,你将不会获得任何更新。此时要更新你的依赖版本请使用 update 命令。这将获取最新匹配的版本(根据你的 composer.json 文件)并将新版本更新进锁文件。
参考:http://docs.phpcomposer.com/01-basic-usage.html
composer 加载本地包
本地包的composer.json
{
"name": "mochong/zoom-api",
"type": "metapackage",
"minimum-stability": "stable",
"extra":{
"branch-alias":{
"dev-master":"1.0.x-dev"
}
},
"require": {}
}
引入成功后的项目的composer.json
{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"repositories": [
{
"type": "path",
"url": "./app/Libs/repositories/zoom-api"
}
],
"license": "MIT",
"require": {
"php": "^7.2",
"fideloper/proxy": "^4.0",
"laravel/framework": "^6.0",
"laravel/tinker": "^1.0",
"mochong/zoom-api": "@dev"
},
"require-dev": {
"facade/ignition": "^1.4",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^3.0",
"phpunit/phpunit": "^8.0"
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories"
]
},
"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"
]
}
}
先添加
"repositories": [
{
"type": "path",
"url": "./app/Libs/repositories/zoom-api"
}
],
再通过命令composer require "mochong/zoom-api @dev" 引入本地包。引入成功后,项目的composer.json 的require会添加"mochong/zoom-api": "@dev"