Nunjucks динамические шаблоны с веб-пакетом - PullRequest
0 голосов
/ 06 июня 2019

Мне нужна помощь с nunjucks.Я пытаюсь динамически создавать html-страницы в папку pages from src/templates.Я использую Browsersync, когда я изменяю что-то в src/templates/pages, он (заново) генерирует html-файлы, но когда я что-то изменяю в src/templates/layout, ничего не происходит.

Структура проекта:

- webpack.config.js
- nunjuckspages.js
- pages
- src
  - templates
     - pages
        - index.njk
        - news.njk
     - layout
        - layout.njk
        - header.njk
        - footer.njk

В моей конфигурации веб-пакета:

plugins: [
   ...nunjuckspages.generatePages(path.resolve(__dirname, 'src/templates/pages'))
]

И это целые nunjuckpages:

const path = require('path');
const fs = require('fs');
const NunjucksWebpackPlugin = require('nunjucks-webpack-plugin');

const directories = []
function walkDir(dir, parent = '') {
    var files = fs.readdirSync(dir);
    for(var x in files){
        var next = path.join(dir,files[x]);
        if(fs.lstatSync(next).isDirectory()==true){
            walkDir(next, parent+'/'+files[x]);
        } else {
            directories.push([path.parse(files[x]).name, (parent+'/').slice(1)]);
        }
    }
    return directories
}

const pages = {
  generatePages: function generatePages(pagesPath) {
    return walkDir(pagesPath).map(
        name =>
            new NunjucksWebpackPlugin({
                templates: [{
                    from: `${pagesPath}/${name[1]}${name[0]}.njk`,
                    to: `pages/${name[1]}${name[0]}.html`
                }]
            }),
        );
    }
};

module.exports = pages;

Я пытался вызвать nunjuckspages.generatePages с другим путем, например, ...nunjuckspages.generatePages(path.resolve(__dirname, 'src/templates')), но вв этом случае файлы макетов тоже были сгенерированы в html-файл, но не должны.

Любой совет?

...