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

Jam*_*son 9 composer-php

在具有很长的包列表和各种功能分支的现有项目中添加新的依赖项我希望通过按字母顺序添加依赖项来缓解和最小化合并冲突.

为了得到这个清理,不过,我希望能够运行--sort-packages在它自己的功能-无需添加或更新任何东西-只是一个单一的承诺是清理现有的包,然后添加"sort-packages" : "true""config"第composer.json文件确保所有新包都按字母顺序添加.

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

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

Dar*_*ein 13

您可以"重新要求"您已经需要的包裹.在我的情况下,它是Symfony 3.4,所以我做了:

composer require symfony/symfony:3.4.*
Run Code Online (Sandbox Code Playgroud)

如果你"sort-packages": true的composer.json中没有,你可以这样做:

composer require --sort-packages symfony/symfony:3.4.*
Run Code Online (Sandbox Code Playgroud)

据我所知,只有require命令具有对包进行排序的选项,因此您似乎需要一个包来进行排序.


小智 5

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

把它放在你的composer.json文件中:

"config": {
    "sort-packages": true
},
Run Code Online (Sandbox Code Playgroud)

  • 这确实是第一步,但是将其添加到 JSON 文件的行为对于实际对先前未排序的包进行排序没有任何影响。(这个答案只是重申了我在原始问题中已经说过的内容)。这里需要回答的问题是第二步特有的,即在 JSON 文件中添加 `"sort-packages": true` 后,如何让 Composer 在不添加或更新任何包的情况下应用排序? (3认同)
  • @StefanKorfitz 实际上在添加了 ```composer config sort-packages true``` 之后执行了 ```composer update``` 不起作用。但是运行 ```composer requirevendor\package``` 确实有效。 (3认同)