我需要编写一个自定义的Gulp任务,该任务将从HTML中删除属性

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

我需要一个Gulp任务,该任务将检查所有分配的HTML文档并删除某些属性(如style="”)。我以为我可以像通过浏览器一样完成该任务,但看起来不行。下面是我正在尝试做的事情:

// function to take multiple attributes from an element
const discardAttributes = (element, ...attributes) =>
  attributes.forEach((attribute) => element.removeAttribute(attribute));

// run the function on multiple elements
document.querySelectorAll("table, thead, tbody, tr, th, td").forEach((elem) => {
  discardAttributes(elem, "cellspacing", "cellpadding", "width", "style");
});

我想然后采取上述公式,并创建一个大口。任务这样:

const gulp = require("gulp");

gulp.task("clean",  async () => {
 gulp.src("src/*.html")
  .pipe(discardAttributes())
    .pipe(gulp.dest("dist"));
});

如果有一个插件,我可以使用,将做到这一点,请分享,但也,我想学习如何这样做手动。
我需要使用through 2吗?

  • 谢谢-谢谢
mw3dktmi

mw3dktmi1#

你可以使用一些节点dom库,并用gulp Package 它。例如,你可以尝试jsdom和 Package gulp-dom:

const gulp = require('gulp');
const dom = require("gulp-dom");

gulp.task("default", async () => {
 gulp.src("src/*.html")
  .pipe(dom(function() {

      // function to take multiple attributes from an element
      const discardAttributes = (element, ...attributes) =>
        attributes.forEach((attribute) => element.removeAttribute(attribute));

      // run the function on multiple elements
      return this.querySelectorAll("table, thead, tbody, tr, th, td").forEach((elem) => {
       discardAttributes(elem, "cellspacing", "cellpadding", "width", "style");
    });

  }))
  .pipe(gulp.dest("dist"));
});

相关问题