Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。
配合 Composer中文文档 使用
记录一些 Composer 使用小技巧
仅更新单个库
只想更新某个特定的库,不想更新它的所有依赖,很简单:
1 | composer update foo/bar |
此外,这个技巧还可以用来解决“警告信息问题”。你一定见过这样的警告信息:
1 | Warning: The lock file is not up to date with the latest changes in composer.json, |
那么我们该怎么办呢?update
命令可以更新lock
文件,但是如果仅仅增加了一些描述,应该是不打算更新任何库。这种情况下,只需update nothing
:
1 | $ composer update nothing |
这样一来,Composer不会更新库,但是会更新composer.lock
。注意nothing
并不是update
命令的关键字。只是没有nothing
这个包导致的结果。如果你输入foobar
,结果也一样
如果你用的Composer
版本足够新,那么你可以直接使用--lock
选项:
1 | composer update --lock |
不编辑composer.json的情况下安装库
你可能会觉得每安装一个库都需要修改composer.json
太麻烦,那么你可以直接使用require
命令
1 | composer "foo/bar:1.0.0" |
这个方法也可以用来快速地新开一个项目。init
命令有--require
选项,可以自动编写composer.json
:(注意我们使用-n,这样就不用回答问题)
1 | $ composer init --require=foo/bar:1.0.0 -n |
派生很容易
初始化的时候,你试过create-project命令么?
1 | composer create-project doctrine/orm path 2.2.0 |
这会自动克隆仓库,并检出指定的版本。克隆库的时候用这个命令很方便,不需要搜寻原始的URI了
考虑缓存,dist包优先
最近一年以来的Composer会自动存档你下载的dist
包。默认设置下,dist包用于加了tag的版本,例如 "symfony/symfony": "v2.1.4"
,或者是通配符或版本区间,"2.1.*"或">=2.2,<2.3-dev"
(如果你使用stable
作为你的minimum-stability
)。
dist
包也可以用于诸如 dev-master
之类的分支,Github允许你下载某个git引用的压缩包。为了强制使用压缩包,而不是克隆源代码,你可以使用install
和updat
e的--prefer-dist
选项。
下面是一个例子(我使用了–profile选项来显示执行时间):
1 | $ composer init --require="twig/twig:1.*" -n --profile |
这里,twig/twig:1.12.2
的压缩包被保存在 ~/.composer/cache/files/twig/twig/1.12.2.0-v1.12.2.zip
。重新安装包时直接使用。
若要修改,源代码优先
当你需要修改库的时候,克隆源代码就比下载包方便了。你可以使用--prefer-source
来强制选择克隆源代码。
1 | composer update symfony/yaml --prefer-source |
接下来你可以修改文件:
1 | composer status -v |
当你试图更新一个修改过的库的时候,Composer会提醒你,询问是否放弃修改:
1 | $ composer update |
其他
为生产环境作准备
最后提醒一下,在部署代码到生产环境的时候,别忘了优化一下自动加载:
1 | composer dump-autoload --optimize |
安装包的时候可以同样使用 --optimize-autoloader
。不加这一选项,你可能会发现20%到25%的性能损失