webpack karma-runner karma-jasmine karma-webpack

Karma webpack sacando mĂșltiples "paquetes web: espera hasta que termine el paquete"



karma-runner karma-jasmine (2)

Después de las versiones recientes de webpack 1.14.0 / karma 1.4.0 / karma-webpack 2.2.0, ahora veo muchos de estos mensajes cuando el karma comienza su construcción de paquete web.

webpack: wait until bundle finished:

A veces veo hasta 6-8 de ellos y parecen estar haciendo la construcción más larga. Por ejemplo, esto:

Hash: 255562a2a96fffe34fae Version: webpack 1.14.0 Time: 408ms webpack: bundle is now VALID. webpack: bundle is now INVALID. webpack: wait until bundle finished: webpack: wait until bundle finished: webpack: wait until bundle finished: webpack: wait until bundle finished: webpack: wait until bundle finished: webpack: wait until bundle finished: ts-loader: Using [email protected] and C:/git/project/tsconfig.json

Hasta el momento, no ha detenido mi construcción, pero al menos parece que algo se está bloqueando, aunque sea temporalmente. ¿Alguien más está viendo esto? Me gustaría aclarar esto si es algo de mi parte, pero como digo, mis archivos de configuración no han cambiado, pero ahora esto ha aparecido con la reciente avalancha de lanzamientos de la familia de productos karma / webpack en el últimas 3 semanas.

Mis preguntas son:

  1. ¿Qué significa este mensaje?
  2. ¿Qué se puede hacer para solucionar el problema al crearlos?

karma-webpack trata cada archivo de especificación como punto de entrada independiente y produce un paquete de paquete web separado para cada uno. Por lo tanto, los registros de la consola están bien y no indican ningún problema.

Si quieres deshacerte del webpack: wait until bundle finished: múltiple webpack: wait until bundle finished: salidas puedes deshabilitar el registro de información de webpack-dev-middleware en tu configuración de karma:

... webpackMiddleware: { noInfo: true }, ...

Lea más sobre la lista completa de opciones posibles para la sección webpackMiddleware en el archivo léame del paquete webpack-dev-middleware .


Bueno. Trabajé con esto y parece que encontré una solución.

En mi caso, los problemas estaban en varios archivos, incluido en el Karma.conf

Antes de tener esta configuración de archivos

files: [ src/**/*.spec.js'' ], preprocessors: { ''src/**/*.spec.js'': [''webpack''] },

Parece que karma lanza una compilación de webpack para cada archivo que se incluyó y se necesita una memoria (para mantener un archivo compilado antes de las pruebas). Es por eso que tenemos una pérdida de memoria y un problema de recursos / tiempo.

Así que resolví este problema con estos cambios: creé un archivo testEntry en la raíz de mi aplicación (espero que Karma solo trabaje con él y activará la compilación webpack solo una vez, para este archivo) y funciona exactamente como yo esperado :)

files: [ ''src/__testsEntry__.spec.js'' ],

En este archivo requiero todas las pruebas a través de esta construcción

const req = require.context("./", true, /.+.spec.js/igm); req.keys().forEach(function(key) { req(key); });

Esto resolvió mi problema y ahora solo tengo una compilación de webpack para un archivo. Aumentó la velocidad del proceso de prueba del proyecto y los recursos de la PC.

Espero eso ayude. Atentamente.

PD: hay una captura de pantalla con un informe para demostrar que cada conjunto de pruebas se mostró como un grupo diferente a través de karma-spec-reporter

Aquí hay una demostración de solo un proceso de agrupamiento en el caso de prueba.

Actualización 2: en esta solución, existe algún problema con la depuración en caso de falla de la prueba, porque veremos en el informe un número de línea de nuestro archivo testEntry (no un archivo original). Entonces, hasta que encontremos otra solución posible, podemos usar algunas convenciones de nombres de sus suites de prueba para aumentar la comprensión: en qué archivo falló nuestra prueba.