composer的一些command
01
composer是包管理工具,其设定file主要在composer.json中定义。
composer require <package_name> // 例如:swiftmailer/swiftmailer
此命令执行之后,composer.json 会自动加入以下设定,例如:
"require": {
"swiftmailer/swiftmailer": "^5.4"
}
也可以先在以上file中加入package的设定,然后运行 composer install 进行安装,但如果已有安装的package,通常composer.lock会发出警告,可以先删除lock文件再重新进行安装,也可以执行 composer update --lock ,参看03
如果执行时候加上 --dev Option
composer require filp/whoops --dev //例如 filp/whoops 一个errhandler的package
表示安装dev环境下的包,在json文件中自动加上:
"require": {
"filp/whoops": "^2.1"
}
关于version 的表示详解如下:
^ Caret Rage:
^1.2.3 表示>=1.2.3 <2.0.0 , 对于1.0以下版本:^0.3 表示 >=0.3.0 < 0.4
~ Tilde Rage:
范围控制更精确
~1.2.3 表示 >=1.2.3 <1.3.0
- Wildcard Rage:
1.2.* 表示 >=1.2 < 1.3
|| 表示多种兼容
eg. ^5.7 || ^7.0
这种方式来表示多个不连续的版本号空间
02
autoload
classmap, namespace, file 等可以在json 中设定如下,再通过autoload 文件自动导入,省略require 文件的书写
"autoload": {
"classmap": ["classes/", "libs/"],
"files": ["config/database.php"],
"psr-4": {
"" : "src/" //这表示所有的namespace 都到src下寻找
"App\\Book\\": "src/book/"
//具体表示app/book的namespace路径,有了上面general 的设定,此处可省略。
}
}
autoload 根据composer.json的设定产生autoload.php
composer dumpautoload
但每次package 更新的时候都需要重新执行以上命令,因此可以修改为
composer dumpload -o //optimized
或者在composer.json 中加入:
"config": {
"optimize-autoloader": true
}
03
其他命令:
移除package
composer remove <package_name>
如果事先在composer.json 中写好要安装的package名和其版本号,可以用composer install 集中安装。
composer install
通常安装之后会自动加入composer.lock 以锁定版本,如果需要更新的话,可以用以下命令:
composer update --lock
还有
composer update <package_name> // 对package 进行upd
composer update //对所有package upd
composer self-update // composer 自己upd