如何用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 :忽略
php
,hhvm
,hhvm
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