簡體   English   中英

模板路徑中的通配符不適用於帶有gulp的nunjucks

[英]Globbing in template path not working in nunjucks with gulp

我正在使用這個gulp插件使用nunjucks來簡化HTML管理。

https://github.com/carlosl/gulp-nunjucks-render

gulp.task('default', function () {
  return gulp.src('src/templates/*.html')
    .pipe(nunjucksRender({
      path: ['src/templates/'] // String or Array
    }))
    .pipe(gulp.dest('dist'));
});

我想將模板和特定頁面的部分內容保留在頁面目錄下的不同文件夾中,因此我嘗試將路徑保留為

path: ['src/templates/', 'src/common-partials/', 'src/pages/**/**/includes/']

但它不起作用。

Template render error: (unknown path)
  Error: template not found: component1.nunjucks

我的設定

在此處輸入圖片說明

我認為可能是兩個/**/**/問題。 **模式與路徑字符串中的多個級別匹配,因此我不太確定其中兩個are行的行為應如何。 以下應與您的目錄匹配:

'src/pages/**/includes/'

也就是說,如果nunjucks首先支持globbing(我在文檔中找不到任何提及)。

path選項不支持通配符。 您必須分別傳遞每個路徑:

gulp.task('default', function () {
  return gulp.src('src/templates/*.html')
    .pipe(nunjucksRender({
      path: ['src/templates/', 'src/pages/section_name/sub-page/includes'] 
    }))
    .pipe(gulp.dest('dist'));
});

如果您真的想使用globing,則可以使用glob模塊在將每個glob傳遞給gulp-nunjucks-render之前對其進行gulp-nunjucks-render

var glob = require('glob');

gulp.task('default', function() {
  var includeDirs = ['src/templates/', 'src/pages/**/includes'];

  return gulp.src('src/templates/*.html')
    .pipe(nunjucksRender({
      path: includeDirs.reduce(function(dirs, g) {
        return dirs.concat(glob.sync(g));
      }, [])
    }))
    .pipe(gulp.dest('dist'));
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM