Karma webpack выводит несколько " webpack: дождитесь завершения пакета"
после последних выпусков webpack 1.14.0 / karma 1.4.0 / karma-webpack 2.2.0, я теперь вижу много этих сообщений, когда karma начинает свою сборку webpack.
webpack: wait until bundle finished:
иногда я вижу целых 6-8 из них, и они, кажется, делают сборку длиннее. Например, это:
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 typescript@2.1.5 and C:gitprojecttsconfig.json
до сих пор это не остановило мою сборку, но, по крайней мере, кажется, что что-то теперь блокируется, если даже временно. Кто-нибудь еще это видел? Я бы хотел почистить это. если это что-то на моем конце, но, как я уже сказал, Мои файлы конфигурации не изменились, но теперь это появилось с недавним потоком выпусков из семейства продуктов karma/webpack за последние 3 недели.
мои вопросы:
- что означает это сообщение?
- что можно сделать чтобы исправить проблему, создавая их?
2 ответов
karma-webpack рассматривает каждый файл спецификации как отдельную точку входа и создает отдельный пакет webpack для каждого. Таким образом, ваши журналы консоли просто прекрасны и не указывают на какие-либо проблемы.
Если вы хотите избавиться от несколько webpack: wait until bundle finished:
выходы вы можете отключить webpack-dev-middleware info вход в конфигурацию karma:
...
webpackMiddleware: {
noInfo: true
},
...
Прочитайте больше о полном списке возможных вариантов для раздела webpackMiddleware в readme webpack-dev-промежуточное ПО.
- ладно. Работал с этим и, похоже, нашел решение.
в моем случае проблемы были в нескольких файлах, в том числе в карме.conf
до того, как у меня было это файлы конфигурация
files: [
src/**/*.spec.js'
],
preprocessors: {
'src/**/*.spec.js': ['webpack']
},
похоже, что karma запускает компиляцию webpack для каждого включенного файла, и для этого требуется память (чтобы сохранить скомпилированный файл перед тестами). Так вот почему у нас есть утечка памяти и ресурсов/времени.
Так я решил эту проблему к этим изменениям: Я создал один файл testEntry в моем корне приложения (я ожидаю, что Karma будет работать только с ним, и он запустит компиляцию webpack только один раз, для этого файла), и он работает точно так, как я ожидал :)
files: [
'src/__testsEntry__.spec.js'
],
в этом файле мне потребовались все тесты через эту конструкцию
const req = require.context("./", true, /.+.spec.js/igm);
req.keys().forEach(function(key) {
req(key);
});
это решило мою проблему, и теперь у меня есть только одна компиляция webpack для одного файла. Это увеличило скорость процесса тестирования проекта и ресурсов ПК.
Надежда это помогает. С уважением.
P. S. Есть скриншот с отчетом, чтобы продемонстрировать, что каждый набор тестов, показали, как различные группы через карма-спец-репортер
вот демонстрация только одного процесса связывания в тестовом примере.
обновление 2: в этом решении существует проблема с отладкой в случае сбоя теста, потому что мы увидим в отчете строки число наших testEntry file (не исходный файл). Поэтому, пока мы не найдем другое возможное решение, мы можем использовать некоторые соглашения по именам ваших наборов тестов для улучшения понимания-в каком файле наш тест не удался.