使用 lastmod 作为 gulp-sitemap 和 cheerio 中的函数

Using lastmod as a function within gulp-sitemap with cheerio

我正在尝试将 lastmod 函数与 cheerio(或 gulp-cheerio)结合使用,从流中每个文件的元标记中提取一个值以填充此 lastmod 条目。

var gulp = require('gulp');
var cheerio = require('cheerio');
var sitemap = require('gulp-sitemap');

gulp.task('sitemap', function() {
    return gulp.src(['/prod/**/*.html',])

    .pipe(sitemap({ 
        siteUrl: 'https://www.somewhere.com',
        lastmod: function(file) {

            var $ = cheerio.load(body);
            var lastmodValue = $('head > meta[name="dc.date"]').attr('content');

            return lastmodValue.toString().trim();
        }
    }))

    .pipe(gulp.dest('/prod'));
});

如果我在 return 之前对 var 进行硬编码并注释掉 cheerio 语句,这会很好地工作。 Gulp-sitemap lastmod 说明在这里:https://github.com/pgilad/gulp-sitemap#lastmod

找到我的问题 - 这是有效的代码:

.pipe(sitemap({ 
        siteUrl: 'https://www.somewhere.com', 
        lastmod: function(file) {

            var $ = cheerio.load(file.contents);
            var lastmodValue = $('head > meta[name="dc.date"]').attr('content');

            return lastmodValue.toString().trim();
      }
    }))