一. selfupdate
更新 composer 本身,请经常执行 composer selfupdate 以保持 Composer 一直是最新版本。
composer selfupdate 等价于 composer self-update
二. composer init
根据设置生成一个特定的composer.json文件,设置如下
root@dduan:/home/dduan/test_composer# php composer.phar init
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
# 1. 输入项目命名空间
# 注意<vendor>/<name> 必须要符合 [a-z0-9_.-]+/[a-z0-9_.-]+
Package name (<vendor>/<name>) [root/test_composer]:yourname/projectname
# 2. 项目描述
Description []:这是一个测试composer init 项目
# 3. 输入作者信息,直接回车可能出现如下提示,有的系统可以直接回车,具体为什么?这里不详细介绍
Invalid author string. Must be in the format: John Smith <john@example.com>
# 3.1. 注意必须要符合 John Smith <john@example.com>
Author [, n to skip]: John Smith <john@example.com>
# 4. 输入最低稳定版本,stable, RC, beta, alpha, dev
Minimum Stability []:dev
# 5. 输入项目类型
Package Type (e.g. library, project, metapackage, composer-plugin) []:library
# 6. 输入授权类型
License []:
Define your dependencies.
# 7. 输入依赖信息
Would you like to define your dependencies (require) interactively [yes]?
# 7.1. 如果需要依赖,则输入要安装的依赖
Search for a package:php
# 7.2. 输入版本号
Enter the version constraint to require (or leave blank to use the latest version): >=5.4.0
# 如需多个依赖,则重复以上两个步骤(7.1/7.2)
Search for a package:
# 8. 是否需要require-dev,
Would you like to define your dev dependencies (require-dev) interactively [yes]?
{
"name": "dduan/test_compser",
"description": "这是一个测试composer init 项目",
"type": "library",
"require": {
"php": ">=5.4.0"
},
"authors": [
{
"name": "John Smith",
"email": "john@example.com"
}
],
"minimum-stability": "dev"
}
# 9. 是否生成composer.json
Do you confirm generation [yes]?
# 现在安装依赖项吗
Would you like to install dependencies now [yes]?
三. composer update 与composer install的区别
安装 install
composer install是从composer.lock读取第三方组件及其版本,并将其安装到vendor目录下。
如果composer.lock文件不存在,则读取composer.json第三方组件及其版本,然后安装到vendor目录下。
更新 update
update是直接从composer.json获取第三方组件及其版本,然后更新composer.lock文件。
如果依赖的第三方组件有版本更新,update会将最新的版本安装到vendor目录下,并更新composer.lock。
使用经验
在生产环境下,直接使用composer update命令是有较大风险的,因为可能存在测试阶段使用了版本的第三方组件库,在上线打包的时候执行了composer update命令,导致第三方组件更新未经测试直接发布的问题出现。
比较推荐的做法是在版本管理过程中,将composer.json和composer.lock都加入到版本管理中,在开发过程中注意composer.lock中依赖版本的变化,每次上线打包使用composer install,从composer.lock中获取依赖的第三方组件和版本。
如果需要更新第三方组件,执行composer update命令时,应该在后面追加有必要更新的组件库。