我正在尝试使用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
。