当前位置: 首页 > 后端技术 > PHP

PHP开发人员应该知道的5个Composer技巧

时间:2023-03-30 05:55:21 PHP

Composer是新一代的PHP依赖管理工具。本文介绍了使用Composer的五个技巧,希望能给您的PHP开发带来方便。1.只更新单个库如果只想更新某个特定的库,不想更新它所有的依赖,很简单composerupdatefoo/bar另外,这个技巧也可以用来解决“warning消息问题”。您一定已经看到此警告消息:警告:锁定文件未与composer.json中的最新更改保持同步,您可能正在获取过时的依赖项,运行更新以更新它们。妈的,怎么了?不要恐慌!如果您编辑了composer.json,您应该会看到类似这样的内容。例如,如果您添加或更新库描述、作者、更多参数等详细信息,甚至只是添加一个空格,都会更改文件的md5sum。然后Composer会警告你hash值与composer.lock中记录的不同。那我们该怎么办呢?update命令可以更新锁文件,但是如果只是添加了一些描述,应该没有更新任何库的意思。在这种情况下,什么都不更新:$composerupdatenothing使用包信息加载composer存储库更新依赖项无需安装或更新写入锁定文件生成自动加载文件这样,Composer将不会更新库,但会更新composer.lock。请注意,nothing不是更新命令的关键字。只是没有什么是这个包的结果。如果您键入foobar,也会发生同样的事情。如果你的Composer版本足够新,可以直接使用--lock选项:composerupdate--lock2.安装库而不编辑composer.json你可能会觉得每次安装库都需要修改composer.json太多比较麻烦,那直接用require命令就可以了。composerrequire"foo/bar:1.0.0"这个方法也可以用来快速打开一个新项目。init命令有一个--require选项,它会自动写入composer.json:(注意我们使用-n所以我们不必回答问题)$composerinit--require=foo/bar:1.0.0-n$catcomposer.json{"require":{"foo/bar":"1.0.0"}}3.虽然fork很容易初始化,但您是否尝试过create-project命令?composercreate-projectdoctrine/ormpath2.2.0这将自动克隆存储库并签出指定版本。克隆存储库时使用此命令非常方便,无需搜索原始URI。4.考虑缓存,首选dist包去年的Composer会自动归档你下载的dist包。默认情况下,dist包用于标记版本,例如“symfony/symfony”:“v2.1.4”,或通配符或版本范围,“2.1.*”或“>=2.2,<2.3-dev”(如果你使用稳定作为你的最低稳定性)。dist包也可用于dev-master等分支,Github允许您下载git参考的tarball。要强制使用tarball而不是克隆源代码,您可以使用安装和更新的--prefer-dist选项。这是一个示例(我使用--profile选项来显示执行时间):$composerinit--require="twig/twig:1.*"-n--profile内存使用:3.94MB(峰值:4.08MB),time:0s$composerinstall--profile使用包信息加载composer存储库安装依赖项-安装twig/twig(v1.12.2)下载:100%写入锁定文件生成自动加载文件内存使用:10.13MB(峰值:65),12.时间:4.71s$rm-rfvendor$composerinstall--profile使用包信息加载composer存储库从锁定文件安装依赖项-安装twig/twig(v1.12.2)从缓存加载生成自动加载文件内存使用:4.96MB(峰值:5.57MB),time:0.45s这里twig/twig:1.12.2的压缩包保存在~/.composer/cache/files/twig/twig/1.12.2.0-v1.12.2.zip。重新安装包时直接使用。5.如果要修改,先源代码当你需要修改库时,克隆源代码比下载包更方便。您可以使用--prefer-source强制选择克隆源。composerupdatesymfony/yaml--prefer-source接下来你可以修改文件:composerstatus-v你在以下依赖项中有更改:/path/to/app/vendor/symfony/yaml/Symfony/Component/Yaml:MDumper.php当你尝试更新修改后的库时,Composer会提醒你并询问是否放弃修改:.2.0)包修改了文件:MDumper.php放弃修改[y,n,v,s,?]?准备生产环境最后提醒一下,在将代码部署到生产环境时,不要忘记优化自动加载:composerdump-autoload--optimize也可以在安装包时使用--optimize-autoloader。如果没有此选项,您可能会注意到20%到25%的性能损失。