Composer php 在不添加/更新依赖项的情况下对包进行排序

Composer php 在不添加/更新依赖项的情况下对包进行排序,composer-php,Composer Php,在一个现有的项目中,有一长串的包和各种功能分支,其中添加了新的依赖项,我想通过按字母顺序添加依赖项来缓解和最小化合并冲突 不过,为了清理这个问题,我希望能够独立运行--排序包功能,而无需添加或更新任何内容--作为清理现有包的单个提交,然后将“排序包”:“true”添加到配置中composer.json文件的一节,以确保按字母顺序添加所有新包 是否可以使用CLI上composer的--sort packages选项对凌乱的composer.json文件中列出的包进行排序,而不实际添加或更新任何依赖

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

不过,为了清理这个问题,我希望能够独立运行
--排序包
功能,而无需添加或更新任何内容--作为清理现有包的单个提交,然后将
“排序包”:“true”
添加到
配置中
composer.json文件的一节,以确保按字母顺序添加所有新包

是否可以使用CLI上composer的
--sort packages
选项对凌乱的
composer.json
文件中列出的包进行排序,而不实际添加或更新任何依赖项?

到目前为止,我找到的唯一解决方法是运行composer update some/package——根据您确定不会更新的包对包进行排序,因为它已经是最新版本。这并不理想。

您可以“重新要求”已经需要的软件包。就我而言,它是Symfony 3.4,所以我做到了:

composer require symfony/symfony:3.4.*
如果composer.json中没有
“sort packages”:true
,则可以执行以下操作:

composer require --sort-packages symfony/symfony:3.4.*
据我所知,只有require命令具有对包进行排序的选项,因此您似乎需要使用一个包进行排序。

我知道我(真的)迟到了!但也许我的回答将来能帮助别人;-)

如果你跑

composer配置排序包true
这将在您的
composer.json
文件中添加以下内容:

“配置”:{
“排序包”:true
},

下次执行
编写器require
(或
update
)时,它将自动对整个列表进行排序。

首先,对于使用
“sort packages”+1:true
,原因如下所述


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

对于一个小而非常稳定的包,您总是可以执行
composer require
,例如
psr/log
。这确实是第一步,但是,将其添加到JSON文件的行为对之前未排序的包的实际排序没有任何影响。(这个答案只是重申了我在原始问题中已经说过的一些东西)。这里需要回答的问题具体到第二步,即在JSON文件中添加
“sort packages”:true
之后,如何让composer在不添加或更新任何包的情况下应用排序?我想我应该在我的原始帖子中添加,在将此添加到composer.JSON之后,它会自动排序整个列表,下次你做一个作曲家需要。。。如果您现在需要排序,那么您可以添加一个随机依赖项并再次删除它;-)我建议您不要直接编辑
composer.json
,而是通过CLI进行编辑,以防止可能的错误编辑,这样也可以加快编写速度。只需写:
composer-config-sort-packages-true
@StefanKorfitz我编辑了您的答案,以反映您的“我想我应该有”评论和Robin Bastiaan的建议(您确实应该避免鼓励手动编辑由工具接触和维护的配置文件的反模式;-)