我只需要为我的 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 更新/安装一个库?
composer.json
吗?
要使用版本 2.1.*
和最低稳定性 @dev
安装 doctrine/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/*
--prefer-source:如果可用,从源安装包。
--prefer-dist:在可用时从 dist 安装包。
--ignore-platform-reqs:忽略 php、hhvm、lib-* 和 ext-* 要求并强制安装,即使本地机器不满足这些要求。另请参阅平台配置选项。
--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 一起使用。
vendor/*
括在引号中:composer update "vendor/*"
安装、更新和要求之间的区别
假设以下场景:
作曲家.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
文件也将更新。
composer update author/package
,然后是 composer install author/package
composer update package
就足够了,无需在它之后调用 install
upvoted
composer.json
和 composer.lock
的升级约束
composer require
还会将软件包更新到最新版本。
您可以使用以下命令更新任何模块及其依赖项
composer update vendor-name/module-name --with-dependencies
您基本上也可以执行以下操作来安装新软件包。
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 require {package/packagename}
喜欢
composer require phpmailer/phpmailer
如果包不在供应商文件夹中.. composer 安装它,如果包存在,composer 将包更新到最新版本。
composer.json
。这不是更新软件包所必需的
为确保 composer 将已安装的软件包更新到您在 composer.json 中设置的版本限制内的最后一个版本,请从供应商中删除该软件包,然后执行:
php composer.phar update vendor/package
因为您想安装特定的包“我只需要为我的 SF2 发行版 (DoctrineFixtures) 安装 1 个包。”
php composer.phar require package/package-name:package-version
就足够了
composer require <package>:<version-constraint>@<stability-flag>
命令时是否会自动更新另一个包(之前明确require
或以前作为依赖项下载)会自动更新?