Как мне получить базовое имя файла и передать его как переменную по конвейеру в gulp?

Я пытаюсь получить базовое имя каждого файла HTML, который проходит через поток. Код здесь явно не работает, потому что _base больше не в сфере. Кажется, должен быть действительно простой способ сделать это, или, может быть, есть что-то встроенное в gulp-ejs, о котором я не знаю. Мысли?

gulp.task('html', function () {
    return gulp.src('app/*.html')
    .pipe(tap(function(file, t){
        var _base = path.basename(file.path, '.html');
    })
    .pipe($.ejs(require('./app/'+_base+'.json')))
});

2 ответа

Вы не можете получить доступ к имени файла, как это, потому что вы находитесь вне области работающего потока. Что вам нужно сделать, это использовать имя файла в вашем кране или использовать via2. Что вы пытаетесь достичь конкретно?

Вы не можете просто заявить _base выше декларации возврата?

gulp.task('html', function () {
    var _base;
    return gulp.src('app/*.html')
    .pipe(tap(function(file, t){
        _base = path.basename(file.path, '.html');
    })
    .pipe($.ejs(require('./app/'+_base+'.json')))
});
Другие вопросы по тегам