Gibt es eine Möglichkeit, package.json zu alphabetisieren, ohne ein Paket zu installieren?

74

Ich habe an vielen alten npm-Paketen gearbeitet, deren Abhängigkeiten nicht in Ordnung sind. Da es sich um eingeschweißte Pakete handelt, ist das Aktualisieren von Abhängigkeiten ein wenig Arbeit (Testen und Überprüfen, ob die Abhängigkeitsänderungen nichts kaputt gemacht haben), aber ich verschiebe einige Abhängigkeiten manuell vom devDependenciesSchlüssel zum dependenciesSchlüssel und möchte nicht alles zu tun, außer sie zu alphabetisieren, bevor ich mich verpflichte. Gibt es eine einfache Möglichkeit, sie programmgesteuert mit npm zu alphabetisieren, anstatt sie manuell auszuführen?

Jo Sprague
quelle
4
Könnten Sie einfach Ihren Texteditor verwenden, um die Abhängigkeitslinien zu sortieren? Sublime Text hat eine integrierte Unterstützung (Bearbeiten -> Zeilen sortieren
erwaman

Antworten:

87

Das sort-package-jsonPaket sortiert nicht nur dependenciesund devDependencies, sondern auch andere Schlüssel. Ich weiß, dass die ursprünglichen Fragen nicht zu den anderen Schlüsseln gestellt wurden, aber ich finde es cool, alle Schlüssel sortiert zu haben.

Sie können einfach ausführen:

npx sort-package-json

Beispiel von der Paketseite:

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

Dies entfernt nicht die nachfolgende Newline wie das npm-sortvon Wolfgang erwähnte Paket.

mts knn
quelle
22
Sie können einfach ausführen, npx sort-package-jsonwenn Sie verwendennpm>=5.2.0
diachedelic
79

Führen Sie einfach npm remove --save anythingoder npm remove --save-dev whateverund npm aus, um diesen Abschnitt zu sortieren, ohne den Inhalt zu berühren. Natürlich sollten Sie sicherstellen, dass der Paketname, den Sie übergeben (was alles sein kann, Spam auf Ihrer Tastatur), nicht in Ihrer package.json enthalten ist.

karl
quelle
4
npm remove --save example; npm remove --save-dev example
Einzeiler
14
Kürzere:npm remove -S example; npm remove -D example
mts knn
3
Ich liebe diese Entwickler-Art, Dinge zu tun, ohne sich auf einige externe Tools verlassen zu müssen))
Haynar
1
Noch kürzere: npm r -S example; npm r -D example( r, rmund unsind die kürzesten Standard Aliase npm uninstall)
mts knn
Dies ist viel einfacher als die Installation einer weiteren Abhängigkeit.
Pgraham
44

Zusätzlich zu Martias Antwort können Sie einfach Folgendes ausführen:

npx sort-package-json

Dadurch wird es nicht dauerhaft installiert. Sie benötigen npm> 5.2.

julianisch
quelle
3
Diese Antwort sollte oben sein
Matthieu Riegler
3
Dieses Paket sortiert auch den "scripts"Abschnitt der package.json. Was für manche vielleicht nicht wünschenswert ist.
Barry Jones
5

Ich habe das npm-sortPaket gefunden , das ziemlich gut zu funktionieren scheint, mit dem kleinen Problem, dass es die nachfolgende Newline aus der package.jsonDatei entfernt.

Wolfgang
quelle
1

Vielleicht möchten Sie auch einen Blick auf fixpack werfen , eine CLI, mit der Sie Ihre package.json in der (leicht) meinungsgebundenen Reihenfolge aktualisieren können. Sie können jedoch ein hinzufügen .fixpackrc, um Ihre eigenen Regeln zu definieren. Die Standardeinstellungen sind:

  • Name zuerst
  • Beschreibung zweitens
  • Version drei
  • Autor viertens
  • alle anderen Schlüssel in alphabetischer Reihenfolge
  • Abhängigkeiten und devDependencies alphabetisch sortiert
  • Zeilenumbruch am Ende der Datei
Paul Razvan Berg
quelle
-1

In VS-Code gibt es einen guten Paketsortierer für die gesamte JSON-Datei.

Es gibt auch etwas namens "Sortier", das mehr sortiert und fantastisch ist.

Kai Gouthro
quelle