es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Construcción de Yarn sin instalar devDependencies (NODE_ENV=production)

Estoy trabajando en un proyecto de Create React App donde nuestro CI ejecuta yarn install y yarn build con NODE_ENV configurado como production para omitir el manejo de devDependencies y acelerar el tiempo de construcción.

Nuestras dependencias de pruebas, tipos y storybook son devDependencies en package.json.

Esto causa errores como:

Cannot find module '@storybook/react' or its corresponding type declarations.  TS2307

> 1 | import { ComponentMeta, ComponentStory } from "@storybook/react";
      |                                               ^
    2 | import ...
    3 | import ...
    4 | import ...

y

Could not find a declaration file for module 'react'. '/app/.../node_modules/react/index.js' implicitly has an 'any' type.
Try `npm i --save-dev @types/react` if it exists or add a new declaration (.d.ts) file containing `declare module 'react';`  TS7016

> 1 | import { useState, lazy, Suspense } from "react";
       |                                          ^
     2 | 
     3 | import ...
     4 |

¿Hay alguna forma de configurar yarn build para ignorar los archivos de storybook y pruebas al construir para producción?

Una solución temporal es configurar NODE_ENV como production después de ejecutar yarn install en nuestro flujo de trabajo de CI (similar a esta respuesta), pero esto aún se siente innecesario e incorrecto (¿por qué deberíamos instalar esas dependencias si no las necesitamos para el artefacto de construcción que nos interesa?).

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, una forma de configurar yarn build para que ignore las devDependencies, como storybook y los archivos de prueba, es actualizar el script build en el archivo package.json. Bajo la sección scripts, cambia el script build por algo como esto:

    "build": "NODE_ENV=production npm prune && react-scripts build"
    

    Agregar npm prune antes de react-scripts build eliminará cualquier dependencia innecesaria, incluidas las devDependencies, antes de comenzar el proceso de construcción. Esto dará como resultado un artefacto de construcción más pequeño con tiempos de construcción más rápidos y debería eliminar los errores causados por las devDependencies faltantes.

    Cabe destacar que es una buena práctica mantener las devDependencies separadas de las dependencies en el archivo package.json. Sin embargo, en casos en los que las devDependencies puedan afectar el proceso de construcción de producción, es importante modificar el script de construcción en consecuencia.

Comments are closed.