有没有一种不用安装软件包就能按字母顺序排列 package.json 的方法?

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

38290 次浏览

我发现了 npm-sort包裹,它似乎工作得非常好,只是有一点小麻烦,就是它从 package.json文件中删除了尾随的换行符。

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

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"
}
}

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

很多文件

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


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

除了马提亚斯的回答,你还可以直接跑:

npx sort-package-json

这不会永久地安装它,需要 npm > 5.2。

in VS-code there's a good packagesorter ofr the whole json file..

there's also something out there called "sortier" which sorts more, and is awesome.

您可能还需要查看一下 补丁包,它是一个 CLI,用于按照(稍微)固定的顺序更新 package.json。然而,您可以添加一个 .fixpackrc来定义您自己的规则,默认值是:

  • 名字第一
  • 描述第二
  • 版本三
  • 第四作者
  • 所有其他字母顺序的钥匙
  • 依赖项和 devDependency 按字母顺序排序
  • 在文件末尾换行

如果使用 网络风暴,只需选择要排序的行并单击 Edit > Sort Lines

但是对于 VScode没有内部解决方案,所以使用这个插件 https://marketplace.visualstudio.com/items?itemName=ue.alphabetical-sorter

您可以简单地从依赖项中删除或卸载不存在的包

npm remove kjkjhkjhkjhkj -f --save

or shorter

npm r -S

其他解决方案是好的,但也有一些缺点: 1-对可能是不想要的行为的其他键进行排序 2-安装诸如 sort-package-json 之类的外部包,即使使用 npx sort-package-json也是如此