Skip to content

Commit 607ee1a

Browse files
committed
fix css rewriter (fr this time)
1 parent f35903c commit 607ee1a

1 file changed

Lines changed: 25 additions & 6 deletions

File tree

src/rewrite/css.js

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,34 @@ class CSS extends EventEmitter {
1414
return this.recast(str, options, 'source');
1515
}
1616
recast(str, options, type) {
17+
const regex =
18+
/(@import\s+(?!url\())?\s*url\(\s*(['"]?)([^'")]+)\2\s*\)|@import\s+(['"])([^'"]+)\4/g
19+
1720
if (!str) return str;
1821
str = new String(str).toString();
19-
str = str.replace(/(?<=url\("?'?)[^"'][\S]*[^"'](?="?'?\);?)/gm, (match) => {
20-
return type === "rewrite" ? this.ctx.rewriteUrl(match) : this.ctx.sourceUrl(match);
21-
});
22-
str = str.replace(/@import\s+(['"])?([^'"\);]+)\1?\s*(?:;|$)/gm, (match, quote, url) => {
23-
return `@import ${quote || ""}${type === "rewrite" ? this.ctx.rewriteUrl(url) : this.ctx.sourceUrl(url)}${quote || ""};`;
22+
return str.replace(
23+
regex,
24+
(
25+
match,
26+
importStatement,
27+
urlQuote,
28+
urlContent,
29+
importQuote,
30+
importContent
31+
) => {
32+
const url = urlContent || importContent
33+
const encodedUrl = type === "rewrite" ? this.ctx.rewriteUrl(url) : this.ctx.sourceUrl(url);
34+
35+
if (importStatement) {
36+
return `@import url(${urlQuote}${encodedUrl}${urlQuote})`
37+
}
38+
39+
if (importQuote) {
40+
return `@import ${importQuote}${encodedUrl}${importQuote}`
41+
}
42+
43+
return `url(${urlQuote}${encodedUrl}${urlQuote})`
2444
});
25-
return str;
2645
}
2746
}
2847

0 commit comments

Comments
 (0)