在一个包含一长串包和各种功能分支(其中添加新依赖项)的现有项目中,我想通过按字母顺序添加依赖项来减轻和最小化合并冲突。
为了清理这个问题,我希望能够单独运行
--sort-packages
功能——无需添加或更新任何内容——只需一次提交即可清理现有包,然后添加"sort-packages" : "true"
到composer.json 文件的"config"
部分,以确保所有新包都按字母顺序添加。
是否可以在 CLI 上使用 Composer 的
composer.json
选项对杂乱的 --sort-packages
文件中列出的包进行排序,而无需实际添加或更新任何依赖项?
到目前为止,我发现的唯一解决方法是针对您确定不会更新的包运行composer update some/package --sort-packages,因为它已经是最新版本。这并不理想。
我知道我(真的)迟到了!但也许我的回答将来可以帮助其他人;-)
如果你跑步
composer config --global sort-packages true
这将在您的
$COMPOSER_HOME/config.json
文件中添加以下内容:
{
"config": {
"sort-packages": true
}
}
下次您执行
composer require <vendor-name>/<project-name>
时,它会自动对整个列表进行排序。
您可以“重新请求”您已经需要的包。就我而言,它是 Symfony 3.4,所以我这样做了:
composer require symfony/symfony:3.4.*
如果你的composer.json中没有
"sort-packages": true
,你可以这样做:
composer require --sort-packages symfony/symfony:3.4.*
据我所知,只有 require 命令具有对包进行排序的选项,因此您似乎需要 require 一个包来应用排序。
自从 1.0.0-alpha10 - 2015-04-14 发布 -
composer require
有了 --sort-packages
选项:
- 向
命令添加了 --sort-packages 选项,用于对依赖项进行排序require
这还不是自
1.0.0-beta1 - 2016-03-03 发布以来的
composer.json#/config/sort-packages
,大约一年后:
它源于 pull-request #3549,还有一些背景故事以及在添加了
sort-packages
配置选项,以在使用 require 命令时强制对需求进行排序
标准化composer.json 中讨论的更多选项 Andreas Möller (localheinz),2018 年 1 月.
"sort-packages": true
+1。直接编辑
composer.lock
是一个坏主意,但我认为这不适用于
composer.json
。我会在 Vim 中编辑文件,选择
"require"
和
"require-dev"
部分(一次一个)和
:sort
中的所有内容。再加上一些摆弄以确保除了最后一行之外的每一行都有逗号。