403

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

当我跑

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

4

8 回答 8

670

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

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

然后只更新这个单一的包:

composer update doctrine/doctrine-fixtures-bundle
于 2013-05-24T17:40:37.717 回答
222

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

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,即使本地机器不满足这些要求。另请参阅配置选项lib-*ext-*platform
  • --dry-run:模拟命令而不实际执行任何操作。
  • --dev:安装列出的软件包require-dev(这是默认行为)。
  • --no-dev:跳过安装require-dev. 自动加载器生成跳过autoload-dev规则。
  • --no-autoloader:跳过自动加载器生成。
  • --no-scripts:跳过 composer.json 中定义的脚本的执行。
  • --no-plugins:禁用插件。
  • --no-progress:删除可能与某些不处理退格字符的终端或脚本混淆的进度显示。
  • --optimize-autoloader (-o) : 将 PSR-0/4 自动加载转换为类映射以获得更快的自动加载器。这特别推荐用于生产,但可能需要一些时间才能运行,因此默认情况下目前不这样做。
  • --lock:仅更新锁定文件哈希以抑制有关锁定文件已过期的警告。
  • --with-dependencies:将白名单包的所有依赖项也添加到白名单中。
  • --prefer-stable:首选稳定版本的依赖项。
  • --prefer-lowest:首选最低版本的依赖项。用于测试需求的最小版本,通常与--prefer-stable.
于 2015-06-08T14:38:31.697 回答
118

安装、更新和要求之间的区别

假设以下场景:

作曲家.json

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

作曲家.lock 文件

  "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文件也将被更新。

于 2019-01-15T10:32:21.600 回答
22

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

composer update vendor-name/module-name --with-dependencies
于 2019-10-16T11:06:46.373 回答
18

您基本上也可以执行以下操作来安装新软件包。

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

然后你只需按回车键。终端将要求另一个软件包,如果您不想安装另一个,只需按回车键即可完成。

于 2015-07-25T04:22:24.507 回答
11

只需使用

composer require {package/packagename}

喜欢

composer require phpmailer/phpmailer

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

于 2018-10-29T11:45:40.060 回答
6

为确保 composer 将已安装的软件包更新到您在 composer.json 中设置的版本限制内的最后一个版本,请从供应商中删除该软件包,然后执行:

php composer.phar update vendor/package
于 2016-08-22T09:52:22.710 回答
5

因为您想安装特定的包“我只需要为我的 SF2 发行版 (DoctrineFixtures) 安装 1 个包。”

php composer.phar require package/package-name:package-version 就足够了

于 2018-12-02T07:46:26.583 回答