如何用Composer更新单个库?

我需要为我的SF2发行版(DoctrineFixtures)只安装一个软件包。

当我跑步

php composer.phar update 

我明白了

  - Updating twig/twig (dev-master 39d94fa => v1.13.0) The package has modified files: M CHANGELOG M doc/filters/batch.test M doc/filters/index.rst M doc/filters/url_encode.rst M doc/functions/index.rst M doc/tags/index.rst M doc/tests/index.rst M lib/Twig/Autoloader.php M lib/Twig/Compiler.php M lib/Twig/CompilerInterface.php -10 more files modified, choose "v" to view the full list 

看起来最后一位开发者编辑了很多供应商内部的文件。

为了解决这个问题,我试了一下

 php composer.phar update <package_name> 

但似乎并不奏效。

我如何更新/安装从composer.json只有一个库?

要安装版本2.1.*和最低稳定性@dev doctrine/doctrine-fixtures-bundle@dev使用以下命令:

 composer.phar require doctrine/doctrine-fixtures-bundle:2.1.*@dev 

那么只更新这个包:

 composer.phar update doctrine/doctrine-fixtures-bundle 

如果你只想更新一些软件包而不是全部,你可以这样列出它们:

 php composer.phar update vendor/package:2.* vendor/package2:dev-master 

您也可以使用通配符一次更新一堆包:

 php composer.phar update vendor/* 
  • –prefer-source :可用时从source 代码安装软件包。
  • –prefer-dist :可用时从dist安装软件包。
  • –ignore-platform-reqs :忽略phphhvmhhvm lib-*ext-*要求,并强制安装,即使本地机器不满足这些要求。 另请参阅platform configuration选项 。
  • –dry-run :模拟这个命令,而不需要做任何事情。
  • –dev :安装require-dev列出的软件包(这是默认行为)。
  • –no-dev :跳过安装在require-dev列出的软件包。 自动加载器生成跳过autoload-dev规则。
  • –no-autoloader :跳过自动加载器的生成。
  • –no-scripts :跳过在composer.json中定义的脚本的执行。
  • –no-plugins :禁用插件。
  • –no-progress :删除可能会混淆某些不能处理退格字符的terminal或脚本的进度显示。
  • –optimize-autoloader(-o) :将PSR-0/4自动加载转换成classmap以获得更快的自动加载器。 这是build议特别是生产,但可能需要一些时间来运行,所以目前没有默认情况下完成。
  • –lock :只更新锁文件散列,以禁止关于锁文件过期的警告。
  • –with-dependencies :将白名单软件包的所有依赖关系也添加到白名单中。
  • – 首选稳定倾向于稳定版本的依赖关系。
  • –prefer-lowest倾向于最低版本的依赖关系。 用于testing最低版本的需求,通常与--prefer-stable

你基本上可以做下面的安装新的包。

 php composer.phar require 

那么terminal会要求你input包裹的名字进行search。

 $ Search for a package []: //Your package name here 

然后terminal会询问软件包的版本(如果你想把最新的版本留空)

 $ Enter the version constraint to require (or leave blank to use the latest version) []: //your version number here 

然后你只要按回车键。 terminal会要求另一个包,如果你不想安装另一个包,只需按回车键,你就可以完成了。

为了确保作曲者在composer.json中设置的版本约束内更新已安装到最后一个版本的一个包,请从供应商中删除包,然后执行:

 php composer.phar update vendor/package