@@ -49,7 +49,7 @@ var parserPlugin = postcss.plugin("css-loader-parser", function(options) {
49
49
values . nodes [ 0 ] . nodes . shift ( ) ;
50
50
var mediaQuery = Tokenizer . stringifyValues ( values ) ;
51
51
if ( loaderUtils . isUrlRequest ( url , options . root ) && options . mode === "global" ) {
52
- url = loaderUtils . urlToRequest ( url , options . root ) ;
52
+ url = urlToRequest ( url , options . root ) ;
53
53
}
54
54
importItems . push ( {
55
55
url : url ,
@@ -98,7 +98,11 @@ var parserPlugin = postcss.plugin("css-loader-parser", function(options) {
98
98
}
99
99
break ;
100
100
case "url" :
101
- if ( options . url && ! / ^ # / . test ( item . url ) && loaderUtils . isUrlRequest ( item . url , options . root ) ) {
101
+ if ( options . url &&
102
+ ! / ^ # / . test ( item . url ) &&
103
+ loaderUtils . isUrlRequest ( item . url , options . root ) &&
104
+ ! isResourceUrl ( item . url )
105
+ ) {
102
106
item . stringType = "" ;
103
107
delete item . innerSpacingBefore ;
104
108
delete item . innerSpacingAfter ;
@@ -141,7 +145,7 @@ module.exports = function processCss(inputSource, inputMap, options, callback) {
141
145
var minimize = typeof forceMinimize !== "undefined" ? ! ! forceMinimize : options . minimize ;
142
146
143
147
var customGetLocalIdent = query . getLocalIdent || getLocalIdent ;
144
-
148
+
145
149
var parserOptions = {
146
150
root : root ,
147
151
mode : options . mode ,
@@ -158,7 +162,7 @@ module.exports = function processCss(inputSource, inputMap, options, callback) {
158
162
return url ;
159
163
}
160
164
if ( global ) {
161
- return loaderUtils . urlToRequest ( url , root ) ;
165
+ return urlToRequest ( url , root ) ;
162
166
}
163
167
}
164
168
return url ;
@@ -248,5 +252,19 @@ function CSSLoaderError(name, message, loc, source, error) {
248
252
this . hideStack = true ;
249
253
}
250
254
255
+ function urlToRequest ( url , root ) {
256
+ url = loaderUtils . urlToRequest ( url , root ) ;
257
+
258
+ return isResourceUrl ( url ) ? trimLocalUrl ( url ) : url ;
259
+ }
260
+
261
+ function trimLocalUrl ( url ) {
262
+ return url . replace ( / \. \/ ( .+ ) / , "$1" ) ;
263
+ }
264
+
265
+ function isResourceUrl ( url ) {
266
+ return / ~ * r e s : \/ \/ ( .+ ) / . test ( url ) ;
267
+ }
268
+
251
269
CSSLoaderError . prototype = Object . create ( Error . prototype ) ;
252
270
CSSLoaderError . prototype . constructor = CSSLoaderError ;
0 commit comments