有没有办法在不安装软件包的情况下按字母顺序化package.json?


76

我一直在研究许多旧的npm软件包,这些软件包的依存关系全部乱七八糟。它们是收缩包装的软件包,因此更新依赖项需要一些工作(测试并验证依赖项更改不会破坏任何东西),但是我正在手动将某些依赖项从devDependencies键移到dependencies键,我不想在我提交之前,除了按字母顺序排列外,什么也不能做。有没有一种简单的方法可以用npm以编程方式将其字母字母化,而不是手动进行?


4
您可以只使用文本编辑器对依赖项行进行排序吗?Sublime Text具有内置支持(编辑->排序行),而IntelliJ具有插件:plugins.jetbrains.com/plugin/5919
erwaman

Answers:


89

sort-package-json软件包不仅排序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"
  }
}

这不会像npm-sortWolfgang提到的软件包那样删除结尾的换行符。


22
npx sort-package-json如果您正在使用,则可以简单运行npm>=5.2.0
diachedelic '18

81

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


4
npm remove --save example; npm remove --save-dev example
单线

14
npm remove -S example; npm remove -D example
简称

3
我喜欢这种开发人员的工作方式,而不必依赖某些外部工具))
haynar 18/10/31

1
甚至更短:npm r -S example; npm r -D examplerrm并且un是最短的默认别名npm uninstall
MTS KNN

这比安装另一个依赖项要容易得多。
pgraham '20

45

除了martias答案之外,您还可以运行:

npx sort-package-json

这不会永久安装。您需要npm> 5.2。


3
这个答案应该
放在首位

5
该软件包还将"scripts"对package.json的部分进行排序。这对于某些人可能不是理想的。
巴里·琼斯


1

您可能还需要看一下fixpack,它是一个CLI(命令行管理程序),用于按照他们的(略)自以为是的顺序更新package.json。不过,您可以添加.fixpackrc来定义自己的规则,默认值为:

  • 首先命名
  • 描述第二
  • 第三版
  • 作者第四
  • 所有其他键按字母顺序排列
  • 依赖项和devDependencies按字母顺序排序
  • 文件末尾的换行符

-1

在VS代码中,整个json文件都有很好的打包程序。

还有一种叫做“分类器”的东西,它可以分类得更多而且很棒。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.