检查GULP中文件是否包含特定字符串



我正在尝试使用GULP4压缩一系列HTML和PHP文件。我遇到的一个问题是一些文件包含<pre>标记。我不想压缩这些文件,因为这样会弄乱文件。是否有一种方法可以使用GULP来评估文件是否包含字符串<pre>,如果包含,则避免对该文件运行压缩?以下是我的相关代码:

const gulp = require('gulp');
const {src, series, parallel, dest} = require('gulp');
const GulpReplace = require('gulp-replace');
function no_2_spaces_purchasingdemand_php()
{
console.log("no 2 spaces purchasingdemand_php")
return gulp.src
(
'dist/purchasingdemand/**/*.php'
,  { base: "./" }
)
.pipe
(
GulpReplace(' ','☺☻')
)
.pipe
(
GulpReplace('☻☺','')
)
.pipe
(
GulpReplace('☺☻',' ')
)
.pipe(gulp.dest('./'))
}
exports.default = series(no_2_spaces_purchasingdemand_html)

我不知道你在用什么来压缩文件,但这里有一个一般的例子:


const gulp = require('gulp');
const filter = require('gulp-filter');
const minify = require('gulp-htmlmin');

gulp.task("preFilterTask", function () {

// return true if want the file in the stream
const preFilter = filter(function (file) {
let contents = file.contents.toString();
return !contents.match('<pre>');
});
return gulp.src("./*.html")

.pipe(preFilter)
.pipe(minify({ collapseWhitespace: true }))
.pipe(gulp.dest('filtered'));
});

gulp.task('default', gulp.series('preFilterTask'));

gulp-htmlmin本身-仅用于html文件-不会减少html文件的<pre>...</pre>部分。因此,如果你使用gulp-htmlmin的html缩小,你不需要过滤掉那些与<pre>标签。

我仍然展示了如何使用gulp-filter插件基于文件内容进行过滤。它可以访问每个文件的内容。如果您不希望该文件传递到下一个pipe,则从过滤器函数返回false

最新更新