Verschieben Sie ein Modul von devDependencies zu Abhängigkeiten in npm package.json


154

Gibt es einen kurzen Befehl zum Verschieben eines Moduls von devDependenciesnach dependenciesin package.json?

Ich mache immer das:

npm uninstall <module_name> --save-dev 
npm install <module_name> --save

Gibt es einen kürzeren Ansatz dafür?

Antworten:


191

Ja! So verschieben Sie ein Modul von devDependenciesnach dependencies:

npm install <module_name> --save-prod


181

Wenn Sie das Gegenteil tun möchten (dh ein Modul von dependenciesnach verschieben devDependencies), tun Sie einfach:

npm install <module_name> --save-dev

oder Kurzform:

npm i <module_name> -D

Kurzschrift aus zu bewegen , devDependenciesum dependencies(prod):

npm i <module_name> -P

5
Funktioniert für mich, v5.6
Legends

1
Kurzschrift npm i module-example -Dwird auch funktionieren, um von Prod zu Dev zu wechseln, sowie npm i module-example -Pum von Dev zu Prod Abhängigkeiten zu wechseln
Andriy

@Andriy danke, habe nicht darüber nachgedacht. Wird die Antwort aktualisieren!
Sid

Wenn Sie stattdessen Garn verwenden, müssen Sie es zuerst aus den Abhängigkeiten mit entfernen yarn remove <module_name>und dann mityarn add <module_name> --dev
Eugenio

16

In Garn:

Verschieben Sie ein Modul von devDependenciesnach dependencies:

yarn remove <module_name> --dev && yarn add <module_name> 

Verschieben Sie ein Modul von dependenciesnach devDependencies:

yarn remove <module_name> && yarn add <module_name> --dev

Wie in den Kommentaren erwähnt, löscht der Befehl das Modul tatsächlich und installiert es an der neuen Stelle neu.


1
Ist das wirklich richtig? Gibt es keine Möglichkeit im Garn, Dinge von dependenciesnach zu bewegen , devDependenciesohne sie zu entfernen und erneut hinzuzufügen?
LondonRob

@ LondonRob das ist der einzige Weg, den ich gefunden habe
Yohaiz

21
Dies bewegt sich nicht, dies löscht einfach das Paket und installiert es erneut
Thanveer Shah

@seeker_of_bacon Hier läuft nichts im Hintergrund. Man könnte verwirrend &&mit &.
Rudolfbyker

3

Wenn Ihr Projekt noch keine Sperrdatei oder Shrinkwrap-Datei hat, können Sie einfach die entsprechende Zeile in Ihre verschieben package.json.

(Ich empfehle nicht, keine Sperrdateien zu verwenden)


3

Das Problem bei der Verwendung von npmoder yarnBefehlen besteht darin, dass die Möglichkeit besteht, dass die neu hinzugefügte Version eine andere Version ist als die derzeit verwendete. Wenn Sie dies möchten - sowohl einen Umzug als auch ein Upgrade -, verwenden Sie die akzeptierte Antwort.

Wenn nicht, bearbeiten Sie Ihrepackage.json einfach manuell, um die Linie vom devDependenciesObjekt zum dependenciesObjekt zu verschieben (ggf. erstellen). Sie können auch in die andere Richtung gehen.

Die Sperrdatei enthält keine Informationen darüber, ob es sich um Produkt- oder Entwicklungsabhängigkeiten handelt, sodass diese nicht aktualisiert werden müssen. Sie können ein npm/ yarn installdanach ausführen, um alle Flags in den Sperrdateien zu reparieren.


Während es nur einen einzigen dependenciesAbschnitt der obersten Ebene gibt package-lock.json, hat jeder Eintrag möglicherweise ein devFlag, das angibt, ob es sich um eine Entwicklungsabhängigkeit oder eine transitive Abhängigkeit von einer handelt. Siehe docs.npmjs.com/files/package-lock.json#dev "Wenn [dev] true ist, ist diese Abhängigkeit entweder NUR eine Entwicklungsabhängigkeit des Moduls der obersten Ebene oder eine transitive Abhängigkeit von einem. Dies ist falsch für Abhängigkeiten, die sind sowohl eine Entwicklungsabhängigkeit der obersten Ebene als auch eine transitive Abhängigkeit einer Nichtentwicklungsabhängigkeit der obersten Ebene. "
Rob3c

0

Das Problem bei der Verwendung von npm install ist, dass Sie am Ende aktualisierte Versionen haben. Was für mich funktioniert hat ist:

  1. Verschieben Sie sie zum beabsichtigten Teil (dev oder prod)
  2. Entfernen Sie sie aus node_modules Ordner
  3. Ausführen npm install

Das hat alle Versionen intakt gehalten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.