Jelajahi Sumber

don't use array to store rules

Gildas 7 tahun lalu
induk
melakukan
c0c6e427a8
1 mengubah file dengan 10 tambahan dan 11 penghapusan
  1. 10 11
      lib/single-file/rules-minifier.js

+ 10 - 11
lib/single-file/rules-minifier.js

@@ -30,13 +30,10 @@ this.rulesMinifier = this.rulesMinifier || (() => {
 				discarded: 0
 			};
 			doc.querySelectorAll("style").forEach(style => {
-				const cssRules = [];
 				if (style.sheet) {
 					const processed = style.sheet.cssRules.length;
 					stats.processed += processed;
-					processRules(doc, style.sheet.cssRules, cssRules, rulesCache);
-					const stylesheetContent = cssRules.join("");
-					style.textContent = stylesheetContent;
+					style.textContent = processRules(doc, style.sheet.cssRules, rulesCache);
 					stats.discarded += processed - style.sheet.cssRules.length;
 				}
 			});
@@ -44,30 +41,32 @@ this.rulesMinifier = this.rulesMinifier || (() => {
 		}
 	};
 
-	function processRules(doc, rules, cssRules, cache) {
+	function processRules(doc, rules, cache) {
+		let stylesheetContent = "";
 		if (rules) {
 			Array.from(rules).forEach(rule => {
 				if (rule.media) {
-					cssRules.push("@media " + Array.prototype.join.call(rule.media, ",") + " {");
-					processRules(doc, rule.cssRules, cssRules, cache);
-					cssRules.push("}");
+					stylesheetContent += "@media " + Array.prototype.join.call(rule.media, ",") + " {";
+					stylesheetContent += processRules(doc, rule.cssRules, cache);
+					stylesheetContent += "}";
 				} else if (rule.selectorText) {
 					const selector = getFilteredSelector(rule.selectorText);
 					if (selector) {
 						try {
 							if (cache[selector] || doc.querySelector(selector)) {
-								cssRules.push(rule.cssText);
+								stylesheetContent += rule.cssText;
 								cache[selector] = true;
 							}
 						} catch (error) {
-							cssRules.push(rule.cssText);
+							stylesheetContent += rule.cssText;
 						}
 					}
 				} else {
-					cssRules.push(rule.cssText);
+					stylesheetContent += rule.cssText;
 				}
 			});
 		}
+		return stylesheetContent;
 	}
 
 	function getFilteredSelector(selector) {