Mueva un módulo de devDependencies a dependencias en npm package.json

154

¿Hay algún comando corto para mover un módulo desde devDependenciesque dependenciesen package.json?

Siempre me encuentro haciendo esto:

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

¿Hay un enfoque más corto para esto?

Emad Emami
fuente

Respuestas:

191

¡Si! para mover un módulo de devDependenciesa dependencies:

npm install <module_name> --save-prod

Francois Wouts
fuente
181

Si desea hacer lo contrario (es decir, mover un módulo de dependenciesa devDependencies) simplemente haga:

npm install <module_name> --save-dev

o taquigrafía:

npm i <module_name> -D

abreviada para pasar de devDependenciesa dependencies(prod):

npm i <module_name> -P
Sid
fuente
55
Funciona para mí, v5.6
Legends
1
la taquigrafía npm i module-example -Dtambién funcionará para pasar de prod a dev, así como npm i module-example -Ppara pasar de dev a dependencias prod
Andriy
@Andriy gracias, no lo pensé. Se actualizará la respuesta!
Sid
Si en su lugar usa hilo, primero debe eliminarlo de las dependencias con yarn remove <module_name>y luego volver a agregarlo en devDependencies conyarn add <module_name> --dev
Eugenio
16

En hilo:

Mover un módulo de devDependenciesa dependencies:

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

Mover un módulo de dependenciesa devDependencies:

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

Como se dijo en los comentarios, el comando en realidad elimina el módulo y lo reinstala en el nuevo lugar.

yohaiz
fuente
1
¿Es esto realmente correcto? ¿No hay forma en el hilo de mover cosas de dependenciesa devDependenciessin quitar y volver a agregar?
LondonRob
@LondonRob esa es la única forma que he encontrado
yohaiz
21
Esto no se está moviendo, simplemente está eliminando el paquete e instalándolo de nuevo
Thanveer Shah
@seeker_of_bacon Aquí no se ejecuta nada en segundo plano. Puede ser confuso &&con &.
Rudolfbyker
3

Si su proyecto aún no tiene un archivo de bloqueo o un archivo retráctil, simplemente puede mover la línea correspondiente en su package.json.

(No recomiendo no usar archivos de bloqueo)

sean
fuente
3

El problema con el uso npmo yarncomandos es que hay una posibilidad de que la versión que se volverá a añadir es una versión diferente que la que se utiliza actualmente. Si esto es lo que desea, tanto un movimiento como una actualización, continúe y use la respuesta aceptada.

Si no, simplemente edite manualmente supackage.json para mover la línea del devDependenciesobjeto al dependenciesobjeto (creándolo si es necesario). Puedes ir en la otra dirección también.

El archivo de bloqueo no contiene ninguna información sobre si las cosas son dependencias de producción o desarrollo, por lo que no es necesario actualizarlo. Puede hacer un npm/ yarn installdespués para arreglar cualquier indicador en los archivos de bloqueo.

eedrah
fuente
Si bien solo hay una dependenciessección de nivel superior package-lock.json, cada entrada potencialmente tiene un devindicador para indicar si es una dependencia de desarrollo o una dependencia transitiva de una. Consulte docs.npmjs.com/files/package-lock.json#dev "Si [dev es] verdadero, entonces esta dependencia es una dependencia de desarrollo SOLO del módulo de nivel superior o una dependencia transitiva de uno. Esto es falso para las dependencias que son tanto una dependencia de desarrollo del nivel superior como una dependencia transitiva de una dependencia de no desarrollo del nivel superior ".
rob3c
0

El problema de usar npm install es que terminas con versiones actualizadas. Lo que funcionó para mí es:

  1. Moverlos a la parte deseada (dev o prod)
  2. Eliminarlos de la carpeta node_modules
  3. Ejecutar npm install

Eso mantuvo todas las versiones intactas.

Ahmed Mahmoud
fuente