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

xuo3flqw  于 2022-12-08  发布在  Gulp
关注(0)|答案(1)|浏览(204)

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

  1. const gulp = require('gulp');
  2. const {src, series, parallel, dest} = require('gulp');
  3. const GulpReplace = require('gulp-replace');
  4. function no_2_spaces_purchasingdemand_php()
  5. {
  6. console.log("no 2 spaces purchasingdemand_php")
  7. return gulp.src
  8. (
  9. 'dist/purchasingdemand/**/*.php'
  10. , { base: "./" }
  11. )
  12. .pipe
  13. (
  14. GulpReplace(' ','☺☻')
  15. )
  16. .pipe
  17. (
  18. GulpReplace('☻☺','')
  19. )
  20. .pipe
  21. (
  22. GulpReplace('☺☻',' ')
  23. )
  24. .pipe(gulp.dest('./'))
  25. }
  26. exports.default = series(no_2_spaces_purchasingdemand_html)
9w11ddsr

9w11ddsr1#

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

  1. const gulp = require('gulp');
  2. const filter = require('gulp-filter');
  3. const minify = require('gulp-htmlmin');
  4. gulp.task("preFilterTask", function () {
  5. // return true if want the file in the stream
  6. const preFilter = filter(function (file) {
  7. let contents = file.contents.toString();
  8. return !contents.match('<pre>');
  9. });
  10. return gulp.src("./*.html")
  11. .pipe(preFilter)
  12. .pipe(minify({ collapseWhitespace: true }))
  13. .pipe(gulp.dest('filtered'));
  14. });
  15. gulp.task('default', gulp.series('preFilterTask'));

gulp-htmlmin本身--仅用于html文件--不会缩小html文件的<pre>...</pre>部分。因此,如果你使用gulp-htmlmin来缩小html文件,你不需要过滤掉那些带有<pre>标签的文件。
我还展示了如何使用gulp-filter插件根据文件内容进行过滤。它可以访问每个文件的内容。如果你不想让该文件传递到下一个pipe,请从过滤函数返回false

展开查看全部

相关问题