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

Posted

技术标签:

【中文标题】有没有办法在不安装包的情况下按字母顺序排列 package.json?【英文标题】:Is there a way to alphabetize package.json without installing a package? 【发布时间】:2016-03-30 01:16:19 【问题描述】:

我一直在研究许多旧的 npm 包,它们的依赖关系都乱了套。它们是压缩包,因此更新依赖项需要一些工作(测试和验证依赖项更改没有破坏任何内容),但我手动将一些依赖项从 devDependencies 键移动到 dependencies 键,我不想做任何事情,除了在我提交之前按字母顺序排列它们。有没有一种简单的方法可以使用 npm 以编程方式对它们进行字母排序,而不是手动进行?

【问题讨论】:

你能用你的文本编辑器对依赖行进行排序吗? Sublime Text 有内置支持(Edit -> Sort Lines),IntelliJ 有一个插件:plugins.jetbrains.com/plugin/5919 【参考方案1】:

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 包那样删除尾随换行符。

【讨论】:

如果你使用npm>=5.2.0,你可以简单地运行npx sort-package-json【参考方案2】:

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

【讨论】:

单线:npm remove --save example; npm remove --save-dev example 短:npm remove -S example; npm remove -D example 我喜欢这种无需依赖外部工具的开发者方式)) 甚至更短:npm r -S example; npm r -D examplerrmunnpm uninstall 的最短默认别名) 这比安装另一个依赖项要容易得多。【参考方案3】:

除了 martias 的答案,你可以运行:

npx sort-package-json

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

【讨论】:

这个答案应该在上面 这个包也会对 package.json 的 "scripts" 部分进行排序。这对某些人来说可能并不理想。【参考方案4】:

我找到了npm-sort package,它似乎工作得很好,只是它从package.json 文件中删除了尾随换行符。

【讨论】:

我认为这应该被赞成。 sort-package-json 对 package.json 中的所有内容进行排序,但 npm-sort 仅对依赖项和 devDependencies 进行排序。这可能是大多数用户需要的【参考方案5】:

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

名字第一 第二个描述 第三版 作者第四 按字母顺序排列的所有其他键 dependencies 和 devDependencies 按字母顺序排序 文件末尾的换行符

【讨论】:

【参考方案6】:

如果您使用 WebStorm,只需选择要排序的行并点击 Edit > Sort Lines

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

【讨论】:

【参考方案7】:

在 VS-code 中,有一个很好的 packagesorter ofr 整个 json 文件..

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

【讨论】:

以上是关于有没有办法在不安装包的情况下按字母顺序排列 package.json?的主要内容,如果未能解决你的问题,请参考以下文章

如何在忽略大小写的情况下按字母顺序排序?

R:如何在不使用循环的情况下按唯一向量顺序查找所有重复向量值的索引?

我可以在不重置浏览器状态的情况下按顺序运行多个 RSpec/Selenium 测试吗?

如何在没有递归或堆栈但使用父指针的情况下按顺序遍历 BST?

在不更改属性顺序的情况下获取 XML

有没有一种方法可以让我在不输入任何内容的情况下按下回车,并且代码会假设接下来要做啥?