J'ai besoin d'écrire une coutume Gulp tâche qui va supprimer des attributs de mon code HTML

0

La question

Je suis besoin d'un Gulp tâche qui va passer par tous affectés à des documents HTML et supprimer certains attributs (tels que style=""). J'ai pensé que j'ai peut-être été en mesure de le faire de la même manière que je le fais par le biais du navigateur, mais on dirait que non. Voici ce que je suis en train de faire:

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

Je voudrais prendre ensuite la formule ci-dessus et de créer une gorgée.la tâche de la sorte:

const gulp = require("gulp");

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

Si il y a un plug-in que je peux utiliser qui va le faire part s'il vous plaît, mais aussi, je voudrais savoir comment le faire manuellement comme ceci.

Ai-je besoin pour utiliser through2?

Je vous remercie.

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

La meilleure réponse

0

Vous pouvez utiliser un nœud dom bibliothèque, et l'envelopper avec gulp. Par exemple, vous pourriez essayer jsdom et l'enveloppe 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

Ça a l'air prometteur, je vais l'essayer. Questions: je ne vois pas jsdom n'importe où dans le code, comment se fait-il ici? Excuse ma question stupide mais je suis nouveau sur le nœud. Mise à JOUR: Selon mnp docs, "[clin d'oeil, dom] plugin enveloppements jsdom. Cependant, ce plugin ne permet pas de toutes les fonctionnalités fournies par jsdom. Le seul but pour jsdom dans ce plugin est d'analyser un document HTML dans un DOM afin que nous puissions exécuter des opérations sur elle."
desert_dweller

Il fonctionne! Je vous remercie beaucoup. Voici ce que j'ai fait. (1) j'ai installé jsdom comme un devDependancy (2) j'ai installé gulp-dom comme un devDependancy (3), j'ai collé le code ci-dessus et a couru gulp. Désolé je ne peux pas upvote encore.
desert_dweller

Le gulp-dom plugin inclut le jsdom, pas besoin de l'installer séparément. Si vous êtes satisfait de la réponse, vous pouvez l'accepter.
Nikolay

Dans d'autres langues

Cette page est dans d'autres langues

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