Am nevoie pentru a scrie un obicei Înghițitură de sarcini, care va elimina atributele din mea HTML

0

Problema

Am nevoie de o Înghițitură de sarcini, care va merge prin toate atribuit documente HTML și elimina anumite atribute (cum ar fi style=""). Am crezut că poate am fost capabil să-l facă la fel cum am face-o prin intermediul browser-ului, dar se pare ca nu. Aici este ceea ce am încercat să fac:

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

Aș dori pentru a lua apoi formula de mai sus și de a crea o înghițitură.sarcina astfel:

const gulp = require("gulp");

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

Dacă există un plug-in pot folosi, care va face acest lucru vă rugăm să partajați, dar, de asemenea, aș dori să învețe cum să-l facă manual, ca aceasta.

As avea nevoie de a utiliza through2?

Multumesc.

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

Cel mai bun răspuns

0

Puteți utiliza un nod dom bibliotecă, și înfășurați-l cu înghițitură. De exemplu, ai putea încerca jsdom și înveliș înghițitură-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

Acest lucru arata promitator, sunt pe cale să-l încercați. Întrebări: nu văd jsdom oriunde în cod, cum se intră în joc aici? Scuzati-mi intrebare prosteasca dar sunt nou nod. UPDATE: Conform npm docs, "[Înghițitură-dom] plugin împachetări jsdom. Totuși, acest plugin nu permite toate caracteristicile oferite de jsdom. Unicul scop pentru jsdom în acest plugin este de a analiza un document HTML într-un DOM astfel încât să putem rula operațiuni pe ea."
desert_dweller

Acesta funcționează! Vă mulțumesc foarte mult. Aici este ceea ce am făcut. (1) am instalat jsdom ca un devDependancy (2) am instalat înghițitură-dom ca un devDependancy (3) am inserat codul de mai sus și a fugit înghițitură. Îmi pare rău că nu pot upvote încă.
desert_dweller

În înghițitură-dom plugin include jsdom, nu este nevoie să-l instalați separat. Dacă sunteți mulțumit cu răspunsul, puteți să-l accepte.
Nikolay

În alte limbi

Această pagină este în alte limbi

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