Potřebuji napsat vlastní Douškem úkol, který bude odstranit atributy z HTML

0

Otázka

Já jsem potřeboval Doušek úkol, který bude jít přes všechny přiřazené dokumenty HTML a odstranit některé atributy (např. style=""). Myslel jsem, že jsem byl schopen udělat to stejným způsobem, jakým jsem to udělat přes prohlížeč, ale vypadá to, že ne. Zde je to, co se snažím dělat:

// 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");
});

Rád bych, aby pak výše uvedený vzorec a vytvořit douškem.úkol jako tak:

const gulp = require("gulp");

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

Pokud je modul plug-in lze použít, který bude dělat to prosím sdílet, ale také bych se rád naučil, jak dělat to ručně, jako je tento.

Potřeboval bych použít through2?

Děkuji.

gulp javascript npm
2021-11-20 16:26:41
1

Nejlepší odpověď

0

Můžete použít některé uzel dom knihovna, a zabalit to s douškem. Například můžete zkusit jsdom a obal 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"));
});
2021-11-21 17:18:21

To vypadá slibně, já jsem se to zkusit. Otázky: nevidím jsdom kdekoliv v kódu, jak to tady vstupují do hry? Omluvte mou hloupou otázku, ale jsem nový uzel. AKTUALIZACE: Podle npm docs, "[Gulp-dom] plugin zábaly jsdom. I když, tento plugin neumožňuje všechny funkce poskytované jsdom. Jediným účelem, pro jsdom v tomto pluginu je, aby parse HTML dokumentu do DOM tak můžeme řídit provoz na to."
desert_dweller

To funguje! Děkuji moc. Zde je to, co jsem udělal. (1) nainstaloval jsem jsdom jako devDependancy (2) nainstaloval jsem gulp-dom jako devDependancy (3) jsem vložit kód výše a běžel douškem. Promiň, nemůžu upvote.
desert_dweller

V gulp-dom plugin zahrnuje jsdom, není třeba instalovat samostatně. Pokud jste spokojeni s odpovědí lze přijmout.
Nikolay

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................