如何在gulp.pipe()中按文件名过滤.pug文件:忽略含指定关键词的文件
Gulp过滤含特定关键词的.pug文件解决方案
我来帮你搞定这个需求!其实不用折腾event-stream,咱们直接用gulp-ignore结合Node内置的path模块就能轻松实现,代码简洁还靠谱。
步骤1:确认依赖
首先确保你已经安装了必要的包(path是Node内置模块,不用额外安装):
npm install gulp gulp-pug gulp-ignore --save-dev
步骤2:完整实现代码
直接上可运行的任务代码,注释已经写得很清楚了:
const gulp = require('gulp'); const pug = require('gulp-pug'); // 如果你需要编译Pug成HTML,就保留;不需要的话可以删掉 const gulpIgnore = require('gulp-ignore'); const path = require('path'); // 你的忽略关键词数组 const ignoreArr = [ "index", "base", "elem", "temp", "footer", "header", "layout", "section" ]; gulp.task('process-pug', function() { return gulp.src('./src/**/*.pug') // 匹配src目录下所有Pug文件 // 过滤掉文件名包含指定关键词的文件 .pipe(gulpIgnore.exclude(function(file) { // 从文件路径中提取不带扩展名的文件名 const fileName = path.basename(file.path, '.pug'); // 判断文件名是否包含忽略数组里的任意关键词 const shouldIgnore = ignoreArr.some(keyword => fileName.includes(keyword)); // 可选:添加日志,方便查看哪些文件被过滤了 if (shouldIgnore) { console.log(`已忽略文件:${fileName}.pug`); } return shouldIgnore; })) .pipe(pug({ pretty: true })) // 编译Pug为格式化的HTML(不需要就删掉这行) .pipe(gulp.dest('./dist')); // 将处理后的文件输出到dist目录 });
关键逻辑说明
path.basename(file.path, '.pug'):从文件的完整路径中提取不带扩展名的纯文件名,比如src/section-contact.pug会被处理成section-contact。ignoreArr.some(...):检查文件名是否包含忽略数组中的任意一个关键词,只要匹配到一个,就会触发过滤。
可选调整
如果你的需求是文件名完全等于关键词才忽略(而不是包含),只需要把includes改成严格相等===即可:
const shouldIgnore = ignoreArr.some(keyword => fileName === keyword);
内容的提问来源于stack exchange,提问作者user1276919
相关产品推荐
相关产品推荐

