¿Qué hace este comando "react-scripts eject"?

106

¿Qué hace el npm run ejectcomando? Entiendo lo que hacen otros comandos como iniciar, construir, probar. Pero ni idea de cómo expulsarlo.

Ishan Patel
fuente
2
¿Cómo verificar / verificar si este comando se aplicó o no?
AlexNikonov

Respuestas:

156

create-react-app encapsula todos los módulos npm que está usando internamente, por lo que su package.json será muy limpio y simple sin que tenga que preocuparse por ello.

Sin embargo, si desea comenzar a hacer cosas más complejas e instalar módulos que puedan interactuar con los módulos que create-react-app está usando bajo el capó, esos nuevos módulos necesitan saber qué está disponible y qué no, lo que significa que debe tener create-react -app anular el resumen de ellos.

Eso, en esencia, es lo que react-scripts ejecthace. Dejará de ocultar lo que tiene instalado debajo del capó y en su lugar expulsará esas cosas en el package.json de su proyecto para que todos lo vean.

casieber
fuente
2
La respuesta de @Sergii es más precisa. Eject no se trata solo de package.json y módulos NPM, incluye otras cosas (babel, webpack, eslint, etc.) github.com/facebook/create-react-app/blob/master/packages/…
Bruno Monteiro
67
npm run eject

Nota: esta es una operación unidireccional. Una vez que lo hayas hecho eject, ¡no podrás volver!

Si no está satisfecho con la herramienta de compilación y las opciones de configuración, puede hacerlo ejecten cualquier momento. Este comando eliminará la dependencia de compilación única de su proyecto.

En su lugar, copiará todos los archivos de configuración y las dependencias transitivas (Webpack, Babel, ESLint, etc.) directamente en su proyecto para que tenga control total sobre ellos. Todos los comandos excepto ejectseguirán funcionando, pero apuntarán a los scripts copiados para que pueda modificarlos. En este punto estás solo.

No tienes que usarlo nunca eject. El conjunto de funciones seleccionadas es adecuado para implementaciones pequeñas y medianas, y no debería sentirse obligado a utilizar esta función. Sin embargo, entendemos que esta herramienta no sería útil si no pudiera personalizarla cuando esté listo para usarla.

enlace a la documentación


Alternativas a la expulsión

La expulsión le permite personalizar cualquier cosa, pero a partir de ese momento debe mantener la configuración y los scripts usted mismo. Esto puede resultar abrumador si tiene muchos proyectos similares. En tales casos, en lugar de expulsar, recomendamos bifurcar react-scriptsy cualquier otro paquete que necesite. Este artículo profundiza en cómo hacerlo. Puede encontrar más información sobre este tema.

Sergii
fuente
podemos volver a agregar nuevamentenpm install react-scripts
Ashish Kamble
Estoy completamente insatisfecho con ambos enfoques. Tiene dependencias antiguas sin razón aparente. Ambos enfoques ocultan estos problemas y desvían los esfuerzos de desarrollo del proyecto al código sin salida. No hay sustituto para una adecuada gestión de la dependencia.
Árpád Magosányi