对包进行排序而不添加/更新依赖项

问题描述 投票:0回答:3

在一个包含一长串包和各种功能分支(其中添加新依赖项)的现有项目中,我想通过按字母顺序添加依赖项来减轻和最小化合并冲突。

为了清理这个问题,我希望能够单独运行

--sort-packages
功能——无需添加或更新任何内容——只需一次提交即可清理现有包,然后添加
"sort-packages" : "true"
到composer.json 文件的
"config"
部分,以确保所有新包都按字母顺序添加。

是否可以在 CLI 上使用 Composer 的

composer.json
选项对杂乱的
--sort-packages
文件中列出的包进行排序,而无需实际添加或更新任何依赖项?

到目前为止,我发现的唯一解决方法是针对您确定不会更新的包运行composer update some/package --sort-packages,因为它已经是最新版本。这并不理想。

composer-php
3个回答
43
投票

我知道我(真的)迟到了!但也许我的回答将来可以帮助其他人;-)

如果你跑步

composer config --global sort-packages true

这将在您的

$COMPOSER_HOME/config.json
文件中添加以下内容:

{
    "config": {
        "sort-packages": true
    }
}

下次您执行

composer require <vendor-name>/<project-name>
时,它会自动对整个列表进行排序。


36
投票

您可以“重新请求”您已经需要的包。就我而言,它是 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
选项:

  • require
    命令添加了 --sort-packages 选项,用于对依赖项进行排序

这还不是自

1.0.0-beta1 - 2016-03-03 发布以来的 
composer.json#/config/sort-packages,大约一年后:

    添加了
  • sort-packages
     配置选项,以在使用 require 命令时强制对需求进行排序
它源于 pull-request #3549,还有一些背景故事以及在

标准化composer.json 中讨论的更多选项 Andreas Möller (localheinz),2018 年 1 月.


1
投票
首先,出于您描述的所有原因,为使用

"sort-packages": true

+1。

直接编辑

composer.lock

是一个坏主意,但我认为这不适用于
composer.json
。我会在 Vim 中编辑文件,选择 
"require"
"require-dev"
 部分(一次一个)和 
:sort
 中的所有内容。再加上一些摆弄以确保除了最后一行之外的每一行都有逗号。

© www.soinside.com 2019 - 2024. All rights reserved.