如何用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中更新/安装一个库?

512321 次浏览

要安装版本为2.1.*且稳定性最小的@devdoctrine/doctrine-fixtures-bundle,请使用以下命令:

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

然后只更新这个包:

composer update doctrine/doctrine-fixtures-bundle

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

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

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

php composer.phar update vendor/*

正如@ZeroThe2nd所评论的,ZSH用户可能需要用引号括住他们的vendor/*:

php composer.phar update "vendor/*"
  • ——prefer-source:在可用时从source安装包。
  • ——prefer-dist:在可用时从dist安装包。
  • ——ignore-platform-reqs:忽略phphhvmlib-*ext-*要求并强制安装,即使本地机器不满足这些要求。另见platform 配置选项
  • ——即将:模拟命令而不实际做任何事情。
  • ——开发:安装require-dev中列出的包(这是默认行为)。
  • ——no-dev:跳过安装require-dev中列出的包。自动加载器的生成跳过了autoload-dev规则。
  • ——no-autoloader:跳过自动装弹机生成。
  • ——没有剧本:跳过composer.json中定义的脚本的执行。
  • ——no-plugins:禁用插件。
  • ——没有任何进展:删除进度显示,这些显示可能会扰乱一些不处理退格字符的终端或脚本。
  • ——optimize-autoloader (o):转换PSR-0/4自动加载到classmap,以获得一个更快的自动加载器。特别推荐用于生产环境,但可能需要一些时间才能运行,因此目前默认情况下没有这样做。
  • ——锁:只更新锁文件哈希来抑制锁文件过期的警告。
  • ——依赖关系:还将白名单包的所有依赖项添加到白名单中。
  • ——prefer-stable:首选依赖项的稳定版本。
  • ——prefer-lowest:首选依赖项的最低版本。用于测试需求的最小版本,通常与--prefer-stable一起使用。

你也可以按照下面的步骤来安装新包。

php composer.phar require

然后终端会要求你输入包的名称进行搜索。

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

然后终端会询问包的版本(如果你想要最新的版本,就把它留空)

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

然后按回车键。终端会要求安装另一个软件包,如果你不想安装另一个,只要按回车键就可以了。

确保composer将已经安装的包更新到您在composer中设置的版本约束的最后一个版本。Json从供应商删除包,然后执行:

php composer.phar update vendor/package

只使用

composer require {package/packagename}

就像

composer require phpmailer/phpmailer

如果包不在供应商文件夹..Composer安装它,如果包存在,Composer将包更新到最新版本。

更新:

require安装或更新最新的包版本。如果你想更新一个包,只需使用update

因为你想安装特定的包 “我只需要为我的SF2发行版安装一个包(DoctrineFixtures)。”< / p > < p > php composer.phar require package/package-name:package-version

安装,更新和要求的区别

假设以下场景:

< em > composer.json < / em >

"parsecsv/php-parsecsv": "0.*"

< em >作曲家。锁文件< / em >

  "name": "parsecsv/php-parsecsv",
"version": "0.1.4",

最新版本是1.1.0。最新的0.*版本是0.3.2

安装: composer install parsecsv/php-parsecsv

这将安装锁文件中指定的0.1.4版本

更新: composer update parsecsv/php-parsecsv

这将把包更新为0.3.2。关于你的composer.json的最高版本。composer.lock中的条目将被更新。

要求: composer require parsecsv/php-parsecsv

这将更新或安装最新版本1.1.0。您的composer.lock文件和composer.json文件也将被更新。

您可以使用以下命令更新任何模块及其依赖项

composer update vendor-name/module-name --with-dependencies