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?

Emad Emami
la source

Réponses:

192

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

npm install <module_name> --save-prod

François Wouts
la source
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
Sid
la source
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.

yohaiz
la source
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)

sean
la source
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.

Eedrah
la source
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.

Ahmed Mahmoud
la source