Загрузить данные. json файл для nunjucks с веб-пакетом - PullRequest
0 голосов
/ 24 февраля 2020

Я ищу аналогичный способ ввода данных. json файл для моего шаблона nunjucks с веб-пакетом. С глотком будет выглядеть примерно так:

gulp.task('nunjucks', function(done) {
    return gulp.src(paths.src.templates + '/*.njk')
        .pipe(data(function() {
            return require('./data.json') 
        }))
        .pipe(nunjucksRender({
            path: paths.src.templates,
            envOptions: {
                lstripBlocks: true,
                autoescape: true,
                trimBlocks: true
            }
        }))
        .pipe(gulp.dest(paths.pages.base))
    done();
});

Есть идеи? Я также использую laravel -микс, который помогает.

Я думал, что смогу сделать это, но не сработало:

mix.webpackConfig({
    module: {
        rules: [{
            test: '/data.json',
            loader: 'json-loader',
            exclude: '/node_modules/'
        }]
    }
});

1 Ответ

1 голос
/ 25 февраля 2020

Вы можете использовать simple-nunjucks-loader (я его автор). Документы получили пример интеграции с html -webpack-plugin (для вывода HTML файлов) и передачи ему данных

https://www.npmjs.com/package/simple-nunjucks-loader#with - html -webpack-plugin


var HTMLWebpackPlugin = require('html-webpack-plugin');
var templateParameters = require('./data.json');

var htmlFiles = require('glob').sync(paths.src.templates + '/*.njk').map((file) => (
  new HTMLWebpackPlugin({
    template: file,
    filename: file.replace('.njk', '.html'),
    templateParameters: templateParameters
  })
));


mix.webpackConfig({
  module: {
    rules: [
      {
        test: /\.njk$/,
        use: [
          {
            loader: 'simple-nunjucks-loader'
          }
        ]
      }
    ]
  },
  plugins: [ 
    ...htmlFiles
  ]
});

...