You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:58:30