¿Por qué yarn instala dependencias de desarrollo pero solo necesito las compilaciones?

3 minutos de lectura

avatar de usuario de vdegenne
vdegenne

si uso yarn add <package-name>Yarn instalará tanto las dependencias como las devDependencies de <package-name>. ¿Está destinado?

Revisé la documentación pero no pude encontrar una manera de evitar la instalación de las dependencias de desarrollo.
devDependencies son las dependencias que se usaron para compilar las fuentes de un paquete, por lo tanto, si estoy en un entorno de producción, no las necesito.

avatar de usuario de kimy82
kimy82

Usar --production=true (o simplemente --production o --prod para abreviar). De hecho, es un comportamiento normal; Yarn asume que se encuentra en un contexto de ‘desarrollo’ a menos que su variable de entorno NODE_ENV esté configurada en ‘producción’.

Echa un vistazo a Yarn’s documentación.

  • Esta funcionalidad parece estar rota debido a github.com/yarnpkg/yarn/issues/6323

    – brodybits

    18 de junio de 2019 a las 1:54

  • No “roto” sino “mal diseñado” --prod todavía descargas e “instalaciones” dev paquetes SI hilo necesita resolver “árbol completo”. Solo usa yarn install --production --frozen-lockfile y a juego yarn.lock y --production funcionará como se esperaba.

    – ddotsenko

    5 de julio de 2020 a las 20:54

  • --production flag ha quedado obsoleto para yarn 2.0. ¿Cómo evitar que yarn 2.0 instale dependencias de desarrollo?

    – akshat

    2 de abril de 2021 a las 5:45

  • Llega tarde a la fiesta, pero la nueva forma de hacerlo en Yarn 2+ es usando yarn workspaces focus --production --all: yarnpkg.com/cli/workspaces/enfoque

    – hoy

    8 dic 2021 a las 14:41


  • Desafortunadamente, no tengo una respuesta, pero me gustaría señalar que nada de lo anterior es correcto a partir de enero de 2022. El hilo se siempre instale devDependencies independientemente de las opciones y NODE_ENV envvar.

    – Resistente

    26 de enero de 2022 a las 1:07

Como se dice en el comentario de @ddotsenko

No “roto” sino “mal diseñado” –prod aún descarga e “instala” paquetes de desarrollo SI el hilo necesita resolver el “árbol completo”. Justo usar yarn install --production --frozen-lockfile y hacer coincidir yarn.lock y –production funcionará como se esperaba.

Eso funcionó para eliminar un node_modules de 210 MB a 70 MB, similar a npm y pnpm.

NODE_ENV=production también previene la instalación de devDependencies

  • usar NODE_ENV=production como entornos antes de ejecutar yarn o yarn install

    – zyfyy

    7 de diciembre de 2021 a las 4:26

Las respuestas existentes parecen perder el punto de la pregunta (incluida la respuesta aceptada).

si invoco yarn add <my-package>Yarn instalará tanto las dependencias como las devDependencies de <my-package>. ¿Es un comportamiento normal?

No, esto suena como un error. No veo este comportamiento con la última versión de yarn v1.

Si yo yarn add foo a mi proyecto, debería haber instalado:

  • mis dependencias directas
  • foo
  • cualquier dependencia de foo y sus dependencias recursivamente
  • no devDependencias de foo
  • devDependencies de mi proyecto (a menos que use varios indicadores de producción/vars mencionados en otras respuestas)
  • (Hasta donde yo sé, yarn no instala automáticamente las dependencias de pares como en las versiones recientes de npm)

si estas corriendo yarn add se puede suponer que está en un contexto “dev”.

Con Yarn 2+, parece que Yarn se centra en las instalaciones PnP, lo que significa una estructura de datos direccionable por contenido que reemplaza la clásica node_modules y se supone que es parte del paquete, por lo tanto, las fuentes del paquete incluirán automáticamente devDependencies.

Sin embargo, yarn workspaces focus <name> --production permite instalar un paquete de espacio de trabajo sin `devDependencias. Ver https://yarnpkg.com/cli/workspaces/focus para más información.

  • Comparta su paquete.json y comparta más información sobre su entorno, como el administrador de paquetes que usó yarn|npm|pnpm y cuáles son las versiones y la información del sistema.

    – Nawaf Khalifah

    15/09/2022 a las 15:06

Avatar de usuario de Webvoid
Webvoid

Yarn tiene una opción de producción, que hará que instale solo las dependencias de producción. Esto es mostrado aquí

  • Comparta su paquete.json y comparta más información sobre su entorno, como el administrador de paquetes que usó yarn|npm|pnpm y cuáles son las versiones y la información del sistema.

    – Nawaf Khalifah

    15/09/2022 a las 15:06

¿Ha sido útil esta solución?