npm 有没有一种方法可以在不安装软件包的情况下按字母顺序排列package.json?

kg7wmglp  于 2023-03-08  发布在  其他
关注(0)|答案(8)|浏览(185)

我一直在处理很多旧的npm包,它们的依赖关系都是乱序的,它们是收缩 Package 的包,所以更新依赖关系有点麻烦(测试并验证依赖项更改没有破坏任何东西),但我手动将一些依赖项从devDependencies键移动到dependencies键,并且我不想做任何事情,除了在提交之前按字母顺序排列它们。除了手动操作,有没有一种简单的方法可以用npm编程地按字母顺序排列它们?

62o28rlo

62o28rlo1#

sort-package-json package不仅对dependenciesdevDependencies进行排序,还对其他键进行排序,我知道最初的问题没有问其他键,但我认为对所有键进行排序很酷。
您可以简单地运行:

npx sort-package-json

程序包页面中的示例:

$ cd my-project

$ cat package.json
{
  "dependencies": {
    "sort-package-json": "1.0.0",
    "sort-object-keys": "1.0.0"
  },
  "version": "1.0.0",
  "name": "my-awesome-project"
}
 
$ npx sort-package-json
package.json is sorted!
 
$ cat package.json
{
  "name": "my-awesome-project",
  "version": "1.0.0",
  "dependencies": {
    "sort-object-keys": "1.0.0",
    "sort-package-json": "1.0.0"
  }
}

这并不像Wolfgang提到的npm-sort包那样删除尾部换行符。

多个文件

$ sort-package-json "my-package/package.json" "other-package/package.json"

$ sort-package-json "package.json" "packages/*/package.json"
8e2ybdfx

8e2ybdfx2#

只要运行npm remove --save anythingnpm remove --save-dev whatever,npm就会对该部分进行排序,而实际上不涉及任何内容。当然,您应该确保传递给它的包名(可以是任何名称,也可以是垃圾键盘)不在package.json中。

khbbv19g

khbbv19g3#

除了马蒂亚斯的回答,你可以只跑:

npx sort-package-json

这不会永久安装它。你需要npm〉5.2。

mfuanj7w

mfuanj7w4#

我已经找到了npm-sort package,它似乎工作得很好,但有一个小问题,它从package.json文件中删除了尾随的换行符。

oyxsuwqo

oyxsuwqo5#

如果您使用的是WebStorm,只需选择要排序的行,然后单击Edit > Sort Lines
但对于VScode没有内部解决方案,因此使用此插件https://marketplace.visualstudio.com/items?itemName=ue.alphabetical-sorter

xe55xuns

xe55xuns6#

您可能还想看看fixpack,它是一个CLI,用于按照它们(稍微)武断的顺序更新package.json。不过,您可以添加一个.fixpackrc来定义自己的规则,默认值为:

  • 姓名优先
  • 描述秒
  • 第三版
  • 第四作者
  • 所有其他键按字母顺序排列
  • 依赖项和devDependency按字母顺序排序
  • 在文件末尾换行
aiazj4mn

aiazj4mn7#

您只需从依赖项中删除或卸载不存在的软件包

npm remove kjkjhkjhkjhkj -f --save

或更短

npm r -S

其它解决方案是好的,但是具有一些缺点:
1-对可能是不需要的行为的其他键进行排序
2-安装外部软件包,例如sort-package-json,即使使用npx sort-package-json

r6l8ljro

r6l8ljro8#

在VS代码中,对整个json文件有一个很好的包分类器。
还有一种叫做“sortier”的东西,它可以分类得更多,而且很棒。

相关问题