Estoy empezando a trabajar con webpack
un node/express
entorno que desarrolla una ReactJS
aplicación renderizada del lado del servidor con react-router
. Estoy muy confundido acerca del rol de cada paquete webpack para entornos dev y prod (tiempo de ejecución).
Aquí está el resumen de mi comprensión:
webpack
: Es un paquete, una herramienta para unir diferentes piezas de una aplicación web y agruparlas en un solo archivo .js (normalmente bundle.js
). A continuación, el archivo de resultados se sirve en un entorno de producción para que lo cargue la aplicación y contiene todos los componentes necesarios para ejecutar el código. Las características incluyen reducción de código, minificación, etc.
webpack-dev-server
: Es un paquete que ofrece un servidor para procesar los archivos del sitio web. También construye un único archivo .js ( bundle.js
) a partir de los componentes del cliente, pero lo sirve en la memoria. También tiene la opción ( -hot
) para monitorear todos los archivos de construcción y construir un nuevo paquete en la memoria en caso de cambios en el código. El servidor se sirve directamente en el navegador (ej http:/localhost:8080/webpack-dev-server/whatever
.:). La combinación de carga en memoria, procesamiento en caliente y servicio de navegador permite al usuario actualizar la aplicación en el navegador cuando cambia el código, ideal para el entorno de desarrollo.
Si tengo dudas sobre el texto anterior, realmente no estoy seguro sobre el contenido a continuación, así que avíseme si es necesario
Un problema común cuando se usa webpack-dev-server
con node/express
es que webpack-dev-server
es un servidor, como está node/express
. Eso hace que este entorno sea complicado para ejecutar tanto el cliente como algún código de nodo / expreso (una API, etc.). NOTA: Esto es lo que he enfrentado, pero sería genial entender por qué sucede eso con más detalles ...
webpack-dev-middleware
: Se trata de un middleware con las mismas funciones de webpack-dev-server
(empaquetado en memoria, recarga en caliente), pero en formato que se puede inyectar a la server/express
aplicación. De esa manera, tiene una especie de servidor (el webpack-dev-server
) interno del servidor de nodo. Vaya: ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ES ESTE UN SUEÑO LOCO ??? ¿Cómo puede esta pieza resolver la ecuación de desarrollo y producción y simplificar la vida?
webpack-hot-middleware
: Esto ... Atascado aquí ... encontré esta pieza cuando buscaba webpack-dev-middleware
... No tengo idea de cómo usarla.
NOTA FINAL: Lo siento, hay algún pensamiento incorrecto. Realmente necesito ayuda para comprender estas variantes en un entorno complejo. Si es conveniente, agregue más paquetes / datos que construirán el escenario completo.
webpack-dev-middleware
(y potencialmentewebpack-hot-middleware
) si quisiera escribir su propio servidor de desarrollo personalizado. A menos que haya una función específica que desee quewebpack-dev-server
no tenga, debe usarla.