Webpack не перезапускает nunjucks после переименования / удаления / создания новых файлов - PullRequest
0 голосов
/ 11 марта 2020

Кажется, веб-пакет не перезагружает конфигурацию при изменении файлов точки входа (новые / удалить / переименовать .nkj файлы). Мне нужно перезапустить веб-пакет, чтобы можно было сгенерировать файл html из nunjucks.

Если я переименую, добавлю новый или удалим один из файлов .njk, я получу сообщение об ошибке «Ошибка: дочерняя компиляция не удалась».

webpack.mix. js

const paths = require('./paths'),
      mix = require('laravel-mix'),
      RemoveWebpackPlugin = require('remove-webpack-plugin'),
      nunjucksConfig = require('./nunjucks.config'),
      path = require('path'),
      WebpackOnBuildPlugin = require('on-build-webpack');

      require('laravel-mix-copy-watched');

mix
    .browserSync({
        server: {
            baseDir: paths.base.dir
        }
    });

    mix.webpackConfig({
            module: {
                rules: [
                    {
                    test: /\.njk$/,
                        use: [
                            {
                                loader: 'simple-nunjucks-loader',
                                options: {
                                    searchPaths: path.join(__dirname, 'src', 'templates'),
                                }
                            }
                        ]
                    }
                ]
            },
            plugins: [
                ...nunjucksConfig.generatePages(path.resolve(__dirname, paths.src.templates))
            ]
        })

nunjucks.config. js

const mix = require('laravel-mix'),
      path = require('path'),
      fs = require('fs'),
      paths = require('./paths'),
      HTMLWebpackPlugin = require('html-webpack-plugin'); 

const pages = {
    generatePages: function generatePages(pagesPath) {
        return walkDir(pagesPath).map(
            name =>
                new HTMLWebpackPlugin({
                    template: `${pagesPath}/${name[1]}${name[0]}.njk`,
                    filename: paths.pages.base + `/${name[1]}${name[0]}.html`,
                    inject: false
                })
        );
    }
};

module.exports = pages;
...