Déplacer un module de devDependencies vers les dépendances dans npm package.json


155

Existe-t-il une commande courte pour déplacer un module de devDependenciesà dependenciesdans package.json?

Je me retrouve toujours à faire ceci:

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

Y a-t-il une approche plus courte à ce sujet?

Réponses:


192

Oui! pour déplacer un module de devDependenciesvers dependencies:

npm install <module_name> --save-prod


183

Si vous voulez faire le contraire (c'est-à-dire déplacer un module de dependenciesvers devDependencies), faites simplement:

npm install <module_name> --save-dev

ou sténographie:

npm i <module_name> -D

raccourci pour passer de devDependenciesà dependencies(prod):

npm i <module_name> -P

5
Fonctionne pour moi, v5.6
Legends

1
sténographie npm i module-example -Dtravaillera également pour passer de la production au développement, ainsi que npm i module-example -Ppour passer des dépendances de développement à celles de production
Andriy

@Andriy merci, je n'y ai pas pensé. Mettra à jour la réponse!
Sid

Si vous utilisez plutôt yarn, vous devez d'abord le supprimer des dépendances avec yarn remove <module_name>, puis l'ajouter à nouveau dans devDependencies avecyarn add <module_name> --dev
Eugenio

16

En fil:

Déplacer un module de devDependenciesvers dependencies:

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

Déplacer un module de dependenciesvers devDependencies:

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

Comme indiqué dans les commentaires, la commande supprime en fait le module et le réinstalle dans le nouvel emplacement.


1
Est-ce vraiment vrai? N'y a-t-il aucun moyen dans le fil de déplacer des choses de dependenciesà devDependenciessans enlever et rajouter?
LondonRob

@LondonRob c'est le seul moyen que j'ai trouvé
yohaiz

21
Cela ne bouge pas, il s'agit simplement de supprimer le paquet et de l'installer à nouveau
Thanveer Shah

@seeker_of_bacon Rien ne fonctionne en arrière-plan ici. Vous pourriez être déroutant &&avec &.
rudolfbyker

3

Si votre projet n'a pas encore de fichier de verrouillage ou de fichier d'emballage, vous pouvez simplement déplacer la ligne correspondante dans votre fichier package.json.

(Je ne recommande pas de ne pas utiliser de fichiers de verrouillage)


3

Le problème avec l'utilisation des commandes npmou yarnest qu'il est possible que la version ajoutée à nouveau soit une version différente de celle qui est actuellement utilisée. Si c'est ce que vous voulez - à la fois un déménagement et une mise à niveau - alors allez-y et utilisez la réponse acceptée.

Sinon, modifiezpackage.json simplement manuellement votre pour déplacer la ligne de l' devDependenciesobjet vers l' dependenciesobjet (en le créant si nécessaire). Vous pouvez aussi aller dans l'autre sens.

Le fichier de verrouillage ne contient aucune information sur les dépendances prod ou dev, donc cela n'a pas besoin d'être mis à jour. Vous pouvez faire un npm/ yarn installaprès pour réparer tous les indicateurs dans les fichiers de verrouillage.


Bien qu'il n'y ait qu'une seule dependenciessection de niveau supérieur dans package-lock.json, chaque entrée a potentiellement un devindicateur pour indiquer s'il s'agit d'une dépendance de développement ou d'une dépendance transitive d'un. Voir docs.npmjs.com/files/package-lock.json#dev "Si [dev est] true, cette dépendance est soit une dépendance de développement UNIQUEMENT du module de niveau supérieur, soit une dépendance transitive de un. Ceci est faux pour les dépendances qui sont à la fois une dépendance de développement du niveau supérieur et une dépendance transitive d'une dépendance non-développement du niveau supérieur. "
rob3c

0

Le problème de l'utilisation de npm install est que vous vous retrouvez avec des versions mises à jour. Ce qui a fonctionné pour moi, c'est:

  1. Les déplacer vers la partie prévue (dev ou prod)
  2. Les supprimer du dossier node_modules
  3. Exécuter npm install

Cela a gardé toutes les versions intactes.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.