Html-Webpack-Plugin очень медленный для нескольких файлов мопсов

У меня есть проект, который использует webpack в качестве сборщика и webpack-dev-server в процессе разработки. Я использую Html-webpack-plugin для компиляции моего файла 30 pug в html, но при использовании с webpack-dev-server время перекомпиляции очень велико, может быть, 5 минут. Кажется, что веб-пакет компилирует весь мой файл мопса, а не только файл, который я изменил.

Вот фрагмент того, как я генерирую html-файл

   import HtmlWebpackPlugin from 'html-webpack-plugin';
   import path from 'path';
   import fs from 'fs';

   export const renderHtml = (programs) => {
    const fileList = [];
    fs.readdirSync(path.join(__dirname, `../programs/${programs}/pug/`)).forEach(file => {
        if (/\.pug$/.test(file)) {
            const name = `${file}`.replace('.pug', '');
            fileList.push({
                name,
                file
            });
        }
    });
    return fileList.map(file => {
        return new HtmlWebpackPlugin({
            filename: file.name + '.html',
            template: path.join(__dirname, `../programs/${programs}/pug/${file.file}`)
        });
    });
   };

   export default renderHtml;

И я использую это так в своем файле webpack.config.babel.js

plugins: [
        ...
        new VueLoaderPlugin(),
        ...renderHtml(programs)
    ]

person Mirza Andriamanamisoa    schedule 17.01.2019    source источник
comment
Ну у меня примерно такая же проблема. Но я думаю, это самоочевидно — у вас все плагины настроены для одной точки входа, поэтому все плагины будут срабатывать при каждом изменении? Я думаю, вам нужна одна точка входа для каждого плагина (мопса), чтобы добиться этого. Так что разделите плагины на большее количество точек входа, это может улучшить ситуацию. Я тоже не думаю, что это хорошо, для меня это не было измеримым изменением времени начальной компиляции. Даже протестировали фрагментацию и разделили их на разных процессорных ядрах. Моя первоначальная компиляция мопса занимает 60-120 секунд. Для меня это перекомпилировано нормально для нерасширенного изменения pug-файла.   -  person Jonas Carlbaum    schedule 21.04.2019


Ответы (1)


Как я понял из этого обсуждения, html-webpack-plugin было несколько драматические исправления производительности при многократном входе в v4.0.0, хотя это все еще бета-версия. По крайней мере, обновление до него исправило проблемы с производительностью для меня с горячей перезагрузкой, перекомпилирующей даже неизмененные файлы.

Поэтому, возможно, измените свою версию в package.json на:

"html-webpack-plugin": "^4.0.0-beta.11",

С последующим:

npm install

Должен решить вашу проблему.

person Klesun    schedule 16.01.2020