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

PHP开发者应该知道的Composer技巧

时间:2023-03-29 23:08:37 PHP

1.只更新单个库只想更新一个特定的库,不想更新它所有的依赖,很简单:composerupdatefoo/bar另外,这个技巧也可以用来解决“警告信息问题”。你一定看到过这样一条警告信息:Warning:Thelockfileisnotupdatewiththelatestchangesincomposer.json,youmaybegettingoutdateddependencies,runupdatetoupdatethem.擦,怎么了?不要恐慌!如果您编辑了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命令有一个自动写入composer.json的--require选项:(注意我们使用-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--profileMemoryusage:3.94MB(peak:4.08MB),时间:0s$composerinstall--profile正在加载包含包信息的composer存储库安装依赖项-安装twig/twig(v1.12.2)下载:100%写入锁定文件生成自动加载文件内存使用:10.13MB(峰值:12.65MB),时间为71。rm-rfvendor$composerinstall--profile使用包信息加载composer存储库从锁定文件安装依赖项-安装twig/twig(v1.12.2)从缓存加载生成自动加载文件内存使用:4.96MB(峰值:5.57MB),时间: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会提醒你并询问是否放弃修改:该包已修改文件:MDumper.php放弃更改[y,n,v,s,?]?生产准备:安装包时也可以使用composerdump-autoload--optimize--optimize-autoloader。如果没有此选项,您可能会注意到20%到25%的性能损失。原文地址:http://www.phpcomposer.com/5-...