Skip to content

Commit 58499ab

Browse files
refactor: code
1 parent 17d7876 commit 58499ab

File tree

4 files changed

+36
-83
lines changed

4 files changed

+36
-83
lines changed

README.md

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,11 +1141,11 @@ With the help of the `/* webpackIgnore: true */`comment, it is possible to disab
11411141
@import url(./basic.css);
11421142
@import /* webpackIgnore: true */ url(./imported.css);
11431143

1144-
/** webpackIgnore: true */
11451144
.class {
1146-
/* Disabled url handling for the all .class */
1145+
/* Disabled url handling for the all urls in 'background' declaration */
11471146
color: red;
1148-
background: url("./url/img.png");
1147+
/** webpackIgnore: true */
1148+
background: url("./url/img.png"), url("./url/img.png");
11491149
}
11501150

11511151
.class {
@@ -1154,12 +1154,6 @@ With the help of the `/* webpackIgnore: true */`comment, it is possible to disab
11541154
background: /** webpackIgnore: true */ url("./url/img.png"),
11551155
url("./url/img.png");
11561156
}
1157-
.class {
1158-
/* Disabled url handling for the all urls in 'background' declaration */
1159-
color: red;
1160-
/** webpackIgnore: true */
1161-
background: url("./url/img.png"), url("./url/img.png");
1162-
}
11631157

11641158
/* prettier-ignore */
11651159
.class {

src/utils.js

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -704,25 +704,21 @@ function sort(a, b) {
704704
}
705705

706706
function isWebpackIgnoreComment(node) {
707-
if (webpackIgnoreCommentRegexp.test(`${node.raws.afterName}`)) {
707+
if (
708+
node.raws.afterName &&
709+
webpackIgnoreCommentRegexp.test(`${node.raws.afterName}`)
710+
) {
708711
return true;
709712
}
710713

711-
const possibleCommentPlaces = [node.prev()];
712-
713-
if (node.type === "decl") {
714-
possibleCommentPlaces.push(node.parent.prev());
715-
}
716-
717-
for (const prevNode of possibleCommentPlaces.filter((i) => Boolean(i))) {
718-
if (prevNode.type !== "comment") {
719-
// eslint-disable-next-line no-continue
720-
continue;
721-
}
714+
const prevNode = node.prev();
722715

723-
if (webpackIgnoreCommentRegexp.test(prevNode.text)) {
724-
return true;
725-
}
716+
if (
717+
prevNode &&
718+
prevNode.type === "comment" &&
719+
webpackIgnoreCommentRegexp.test(prevNode.text)
720+
) {
721+
return true;
726722
}
727723

728724
return false;

test/__snapshots__/loader.test.js.snap

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -743,8 +743,9 @@ var ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_
743743
var ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___, { hash: \\"#Roboto-Regular\\" });
744744
var ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);
745745
var ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___, { hash: \\"#iefix\\" });
746+
var ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { needQuotes: true });
746747
// Module
747-
___CSS_LOADER_EXPORT___.push([module.id, \\"/*webpackIgnore: true*/\\\\n@import url(./basic.css);\\\\n\\\\n@import /* webpackIgnore: true */ url(./imported.css);\\\\n\\\\n/** webpackIgnore: true **/\\\\n@import url(./simple.css);\\\\n\\\\n/** webpackIgnore: true */\\\\n.class {\\\\n color: red;\\\\n background: url(\\\\\\"./url/img.png\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n color: red;\\\\n background: /** webpackIgnore: true */ url(\\\\\\"./url/img.png\\\\\\"), url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n color: red;\\\\n /** webpackIgnore: true */\\\\n background: url(\\\\\\"./url/img.png\\\\\\"), url(\\\\\\"./url/img.png\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background:\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"),\\\\n /** webpackIgnore: true **/ url(\\\\\\"./url/img.png\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"),\\\\n /** webpackIgnore: true **/ url(\\\\\\"./url/img.png\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"),\\\\n /** webpackIgnore: true **/\\\\n url(\\\\\\"./url/img.png\\\\\\");\\\\n}\\\\n\\\\n/** webpackIgnore: true **/\\\\n@font-face {\\\\n font-family: \\\\\\"Roboto\\\\\\";\\\\n src: url(\\\\\\"./fonts/Roboto-Regular.eot\\\\\\");\\\\n src:\\\\n url(\\\\\\"./fonts/Roboto-Regular.eot#iefix\\\\\\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\\\\\"./fonts/Roboto-Regular.woff2\\\\\\") format(\\\\\\"woff\\\\\\"),\\\\n url(\\\\\\"./fonts/Roboto-Regular.woff\\\\\\") format(\\\\\\"woff\\\\\\"),\\\\n url(\\\\\\"./fonts/Roboto-Regular.ttf\\\\\\") format(\\\\\\"truetype\\\\\\"),\\\\n url(\\\\\\"./fonts/Roboto-Regular.svg#Roboto-Regular\\\\\\") format(\\\\\\"svg\\\\\\");\\\\n font-weight: 400;\\\\n font-style: normal;\\\\n}\\\\n\\\\n@font-face {\\\\n font-family: \\\\\\"Roboto\\\\\\";\\\\n src: /** webpackIgnore: true **/ url(\\\\\\"./fonts/Roboto-Regular.eot\\\\\\");\\\\n src:\\\\n /** webpackIgnore: true **/\\\\n url(\\\\\\"./fonts/Roboto-Regular.eot#iefix\\\\\\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") format(\\\\\\"woff\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") format(\\\\\\"woff\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \\") format(\\\\\\"truetype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") format(\\\\\\"svg\\\\\\");\\\\n font-weight: 400;\\\\n font-style: normal;\\\\n}\\\\n\\\\n@font-face {\\\\n font-family: \\\\\\"Roboto\\\\\\";\\\\n src: /** webpackIgnore: true **/ url(\\\\\\"./fonts/Roboto-Regular.eot\\\\\\");\\\\n /** webpackIgnore: true **/\\\\n src:\\\\n url(\\\\\\"./fonts/Roboto-Regular.eot#iefix\\\\\\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\\\\\"./fonts/Roboto-Regular.woff2\\\\\\") format(\\\\\\"woff\\\\\\"),\\\\n url(\\\\\\"./fonts/Roboto-Regular.woff\\\\\\") format(\\\\\\"woff\\\\\\"),\\\\n url(\\\\\\"./fonts/Roboto-Regular.ttf\\\\\\") format(\\\\\\"truetype\\\\\\"),\\\\n url(\\\\\\"./fonts/Roboto-Regular.svg#Roboto-Regular\\\\\\") format(\\\\\\"svg\\\\\\");\\\\n font-weight: 400;\\\\n font-style: normal;\\\\n}\\\\n\\\\n@font-face {\\\\n font-family: \\\\\\"Roboto\\\\\\";\\\\n src: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \\");\\\\n src:\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n /** webpackIgnore: true **/\\\\n url(\\\\\\"./fonts/Roboto-Regular.woff2\\\\\\") format(\\\\\\"woff\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") format(\\\\\\"woff\\\\\\"),\\\\n /** webpackIgnore: true **/\\\\n url(\\\\\\"./fonts/Roboto-Regular.ttf\\\\\\") format(\\\\\\"truetype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") format(\\\\\\"svg\\\\\\");\\\\n font-weight: 400;\\\\n font-style: normal;\\\\n}\\\\n\\\\n/*webpackIgnore: true*/\\\\n.class {\\\\n background-image: image-set(\\\\n url(./url/img.png) 2x,\\\\n url(./url/img.png) 3x,\\\\n url(./url/img.png) 4x\\\\n );\\\\n}\\\\n\\\\n.class {\\\\n /*webpackIgnore: true*/\\\\n background-image: image-set(\\\\n url(./url/img.png) 2x,\\\\n url(./url/img.png) 3x,\\\\n url(./url/img.png) 4x\\\\n );\\\\n}\\\\n\\\\n.class {\\\\n background-image: /*webpackIgnore: true*/ image-set(\\\\n url(./url/img.png) 2x,\\\\n url(./url/img.png) 3x,\\\\n url(./url/img.png) 4x\\\\n );\\\\n}\\\\n\\\\n.class {\\\\n background-image: image-set(\\\\n /*webpackIgnore: true*/\\\\n url(./url/img.png) 2x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") 3x,\\\\n /*webpackIgnore: true*/\\\\n url(./url/img.png) 5x\\\\n );\\\\n}\\\\n\\", \\"\\"]);
748+
___CSS_LOADER_EXPORT___.push([module.id, \\"/*webpackIgnore: true*/\\\\n@import url(./basic.css);\\\\n\\\\n@import /* webpackIgnore: true */ url(./imported.css);\\\\n\\\\n/** webpackIgnore: true **/\\\\n@import url(./simple.css);\\\\n\\\\n.class {\\\\n color: red;\\\\n background: /** webpackIgnore: true */ url(\\\\\\"./url/img.png\\\\\\"), url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n color: red;\\\\n /** webpackIgnore: true */\\\\n background: url(\\\\\\"./url/img.png\\\\\\"), url(\\\\\\"./url/img.png\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background:\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"),\\\\n /** webpackIgnore: true **/ url(\\\\\\"./url/img.png\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"),\\\\n /** webpackIgnore: true **/ url(\\\\\\"./url/img.png\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"),\\\\n /** webpackIgnore: true **/\\\\n url(\\\\\\"./url/img.png\\\\\\");\\\\n}\\\\n\\\\n@font-face {\\\\n font-family: \\\\\\"Roboto\\\\\\";\\\\n src: /** webpackIgnore: true **/ url(\\\\\\"./fonts/Roboto-Regular.eot\\\\\\");\\\\n src:\\\\n /** webpackIgnore: true **/\\\\n url(\\\\\\"./fonts/Roboto-Regular.eot#iefix\\\\\\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") format(\\\\\\"woff\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") format(\\\\\\"woff\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \\") format(\\\\\\"truetype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") format(\\\\\\"svg\\\\\\");\\\\n font-weight: 400;\\\\n font-style: normal;\\\\n}\\\\n\\\\n@font-face {\\\\n font-family: \\\\\\"Roboto\\\\\\";\\\\n src: /** webpackIgnore: true **/ url(\\\\\\"./fonts/Roboto-Regular.eot\\\\\\");\\\\n /** webpackIgnore: true **/\\\\n src:\\\\n url(\\\\\\"./fonts/Roboto-Regular.eot#iefix\\\\\\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\\\\\"./fonts/Roboto-Regular.woff2\\\\\\") format(\\\\\\"woff\\\\\\"),\\\\n url(\\\\\\"./fonts/Roboto-Regular.woff\\\\\\") format(\\\\\\"woff\\\\\\"),\\\\n url(\\\\\\"./fonts/Roboto-Regular.ttf\\\\\\") format(\\\\\\"truetype\\\\\\"),\\\\n url(\\\\\\"./fonts/Roboto-Regular.svg#Roboto-Regular\\\\\\") format(\\\\\\"svg\\\\\\");\\\\n font-weight: 400;\\\\n font-style: normal;\\\\n}\\\\n\\\\n@font-face {\\\\n font-family: \\\\\\"Roboto\\\\\\";\\\\n src: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \\");\\\\n src:\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n /** webpackIgnore: true **/\\\\n url(\\\\\\"./fonts/Roboto-Regular.woff2\\\\\\") format(\\\\\\"woff\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") format(\\\\\\"woff\\\\\\"),\\\\n /** webpackIgnore: true **/\\\\n url(\\\\\\"./fonts/Roboto-Regular.ttf\\\\\\") format(\\\\\\"truetype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") format(\\\\\\"svg\\\\\\");\\\\n font-weight: 400;\\\\n font-style: normal;\\\\n}\\\\n\\\\n.class {\\\\n /*webpackIgnore: true*/\\\\n background-image: image-set(\\\\n url(./url/img.png) 2x,\\\\n url(./url/img.png) 3x,\\\\n url(./url/img.png) 4x\\\\n );\\\\n}\\\\n\\\\n.class {\\\\n background-image: /*webpackIgnore: true*/ image-set(\\\\n url(./url/img.png) 2x,\\\\n url(./url/img.png) 3x,\\\\n url(./url/img.png) 4x\\\\n );\\\\n}\\\\n\\\\n.class {\\\\n background-image: image-set(\\\\n /*webpackIgnore: true*/\\\\n url(./url/img.png) 2x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") 3x,\\\\n /*webpackIgnore: true*/\\\\n url(./url/img.png) 5x\\\\n );\\\\n}\\\\n\\\\n.class {\\\\n background-image: image-set(\\\\n /*webpackIgnore: true*/\\\\n './url/img.png' 2x,\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \\" 3x,\\\\n /*webpackIgnore: true*/\\\\n './url/img.png' 5x\\\\n );\\\\n}\\\\n\\", \\"\\"]);
748749
// Exports
749750
export default ___CSS_LOADER_EXPORT___;
750751
"
@@ -762,12 +763,6 @@ Array [
762763
/** webpackIgnore: true **/
763764
@import url(./simple.css);
764765
765-
/** webpackIgnore: true */
766-
.class {
767-
color: red;
768-
background: url(\\"./url/img.png\\");
769-
}
770-
771766
.class {
772767
color: red;
773768
background: /** webpackIgnore: true */ url(\\"./url/img.png\\"), url(/webpack/public/path/img.png);
@@ -793,20 +788,6 @@ Array [
793788
url(\\"./url/img.png\\");
794789
}
795790
796-
/** webpackIgnore: true **/
797-
@font-face {
798-
font-family: \\"Roboto\\";
799-
src: url(\\"./fonts/Roboto-Regular.eot\\");
800-
src:
801-
url(\\"./fonts/Roboto-Regular.eot#iefix\\") format(\\"embedded-opentype\\"),
802-
url(\\"./fonts/Roboto-Regular.woff2\\") format(\\"woff\\"),
803-
url(\\"./fonts/Roboto-Regular.woff\\") format(\\"woff\\"),
804-
url(\\"./fonts/Roboto-Regular.ttf\\") format(\\"truetype\\"),
805-
url(\\"./fonts/Roboto-Regular.svg#Roboto-Regular\\") format(\\"svg\\");
806-
font-weight: 400;
807-
font-style: normal;
808-
}
809-
810791
@font-face {
811792
font-family: \\"Roboto\\";
812793
src: /** webpackIgnore: true **/ url(\\"./fonts/Roboto-Regular.eot\\");
@@ -850,15 +831,6 @@ Array [
850831
font-style: normal;
851832
}
852833
853-
/*webpackIgnore: true*/
854-
.class {
855-
background-image: image-set(
856-
url(./url/img.png) 2x,
857-
url(./url/img.png) 3x,
858-
url(./url/img.png) 4x
859-
);
860-
}
861-
862834
.class {
863835
/*webpackIgnore: true*/
864836
background-image: image-set(
@@ -885,6 +857,16 @@ Array [
885857
url(./url/img.png) 5x
886858
);
887859
}
860+
861+
.class {
862+
background-image: image-set(
863+
/*webpackIgnore: true*/
864+
'./url/img.png' 2x,
865+
\\"/webpack/public/path/img.png\\" 3x,
866+
/*webpackIgnore: true*/
867+
'./url/img.png' 5x
868+
);
869+
}
888870
",
889871
"",
890872
],

test/fixtures/webpackIgnore.css

Lines changed: 10 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,6 @@
66
/** webpackIgnore: true **/
77
@import url(./simple.css);
88

9-
/** webpackIgnore: true */
10-
.class {
11-
color: red;
12-
background: url("./url/img.png");
13-
}
14-
159
.class {
1610
color: red;
1711
background: /** webpackIgnore: true */ url("./url/img.png"), url("./url/img.png");
@@ -37,20 +31,6 @@
3731
url("./url/img.png");
3832
}
3933

40-
/** webpackIgnore: true **/
41-
@font-face {
42-
font-family: "Roboto";
43-
src: url("./fonts/Roboto-Regular.eot");
44-
src:
45-
url("./fonts/Roboto-Regular.eot#iefix") format("embedded-opentype"),
46-
url("./fonts/Roboto-Regular.woff2") format("woff"),
47-
url("./fonts/Roboto-Regular.woff") format("woff"),
48-
url("./fonts/Roboto-Regular.ttf") format("truetype"),
49-
url("./fonts/Roboto-Regular.svg#Roboto-Regular") format("svg");
50-
font-weight: 400;
51-
font-style: normal;
52-
}
53-
5434
@font-face {
5535
font-family: "Roboto";
5636
src: /** webpackIgnore: true **/ url("./fonts/Roboto-Regular.eot");
@@ -94,15 +74,6 @@
9474
font-style: normal;
9575
}
9676

97-
/*webpackIgnore: true*/
98-
.class {
99-
background-image: image-set(
100-
url(./url/img.png) 2x,
101-
url(./url/img.png) 3x,
102-
url(./url/img.png) 4x
103-
);
104-
}
105-
10677
.class {
10778
/*webpackIgnore: true*/
10879
background-image: image-set(
@@ -129,3 +100,13 @@
129100
url(./url/img.png) 5x
130101
);
131102
}
103+
104+
.class {
105+
background-image: image-set(
106+
/*webpackIgnore: true*/
107+
'./url/img.png' 2x,
108+
'./url/img.png' 3x,
109+
/*webpackIgnore: true*/
110+
'./url/img.png' 5x
111+
);
112+
}

0 commit comments

Comments
 (0)