HTML'MDEN öznitelikleri kaldıracak özel bir Gulp görevi yazmam gerekiyor

0

Soru

Atanan tüm HTML belgelerinden geçecek ve belirli öznitelikleri (style=""gibi) kaldıracak bir Gulp görevine ihtiyacım var. Tarayıcı üzerinden yaptığım gibi yapabileceğimi düşündüm, ama öyle görünmüyor. İşte yapmaya çalıştığım şey:

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

Daha sonra yukarıdaki formülü almak ve bir yudum oluşturmak istiyorum.görev gibi yani:

const gulp = require("gulp");

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

Bunu yapacak kullanabileceğim bir eklenti varsa, lütfen paylaşın, ama aynı zamanda, bunun gibi manuel olarak nasıl yapılacağını öğrenmek istiyorum.

Through2'yi kullanmam gerekir mi?

Teşekkür ederim.

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

En iyi cevabı

0

Bazı düğüm dom kitaplığını kullanabilir ve gulp ile sarabilirsiniz. Örneğin, jsdom ve wrapper gulp-dom'u deneyebilirsiniz:

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

Bu umut verici görünüyor, denemek üzereyim. Sorular: Kodun herhangi bir yerinde jsdom görmüyorum, burada nasıl devreye giriyor? Aptalca sorumu mazur görün ama düğüm konusunda yeniyim. GÜNCELLEME: Npm dokümanlarına göre, "[Gulp-dom] eklentisi jsdom'u sarar. Ancak, bu eklenti jsdom tarafından sağlanan tüm özellikleri etkinleştirmez. Bu eklentideki jsdom'un tek amacı, bir HTML belgesini bir dom'a ayrıştırmaktır, böylece üzerinde işlemler yapabiliriz."
desert_dweller

Çalışmaları! Çok teşekkür ederim. Yaptığım şey şu. (1) Jsdom'u devDependancy olarak yükledim (2) gulp-dom'u devDependancy olarak yükledim (3) Yukarıdaki kodu yapıştırdım ve gulp'u çalıştırdım. Üzgünüm, henüz söyleyemiyorum.
desert_dweller

Gulp-dom eklentisi jsdom'u içerir, ayrı olarak yüklemeye gerek yoktur. Cevaptan memnunsanız, bunu kabul edebilirsiniz.
Nikolay

Diğer dillerde

Bu sayfa diğer dillerde

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