@@ -8,14 +8,17 @@ var getImportPrefix = require("./getImportPrefix");
8
8
var compileExports = require ( "./compile-exports" ) ;
9
9
10
10
11
- module . exports = function ( content , map ) {
11
+ module . exports = function ( content , map ) {
12
12
var callback = this . async ( ) ;
13
13
var query = loaderUtils . getOptions ( this ) || { } ;
14
14
var moduleMode = query . modules ;
15
15
var camelCaseKeys = query . camelCase ;
16
16
var sourceMap = query . sourceMap || false ;
17
+ var exclude = query . exclude ;
18
+ var from = loaderUtils . getRemainingRequest ( this ) . split ( "!" ) . pop ( ) ;
19
+ var to = loaderUtils . getCurrentRequest ( this ) . split ( "!" ) . pop ( ) ;
17
20
18
- if ( sourceMap ) {
21
+ if ( sourceMap ) {
19
22
if ( map ) {
20
23
if ( typeof map === "string" ) {
21
24
map = JSON . stringify ( map ) ;
@@ -33,31 +36,50 @@ module.exports = function(content, map) {
33
36
map = null ;
34
37
}
35
38
39
+ function isExclude ( path ) {
40
+ if ( from . indexOf ( path ) === 0 ) {
41
+ return true ;
42
+ }
43
+ return false ;
44
+ }
45
+
46
+ if ( Array . isArray ( exclude ) ) {
47
+ exclude . forEach ( function ( p ) {
48
+ if ( isExclude ( p ) ) {
49
+ moduleMode = false ;
50
+ }
51
+ } ) ;
52
+ } else if ( typeof exclude === 'string' ) {
53
+ if ( isExclude ( exclude ) ) {
54
+ moduleMode = false ;
55
+ }
56
+ }
57
+
36
58
processCss ( content , map , {
37
59
mode : moduleMode ? "local" : "global" ,
38
- from : loaderUtils . getRemainingRequest ( this ) . split ( "!" ) . pop ( ) ,
39
- to : loaderUtils . getCurrentRequest ( this ) . split ( "!" ) . pop ( ) ,
60
+ from : from ,
61
+ to : to ,
40
62
query : query ,
41
63
loaderContext : this ,
42
64
sourceMap : sourceMap
43
- } , function ( err , result ) {
44
- if ( err ) return callback ( err ) ;
65
+ } , function ( err , result ) {
66
+ if ( err ) return callback ( err ) ;
45
67
46
68
var cssAsString = JSON . stringify ( result . source ) ;
47
69
48
70
// for importing CSS
49
71
var importUrlPrefix = getImportPrefix ( this , query ) ;
50
72
51
73
var alreadyImported = { } ;
52
- var importJs = result . importItems . filter ( function ( imp ) {
53
- if ( ! imp . mediaQuery ) {
54
- if ( alreadyImported [ imp . url ] )
74
+ var importJs = result . importItems . filter ( function ( imp ) {
75
+ if ( ! imp . mediaQuery ) {
76
+ if ( alreadyImported [ imp . url ] )
55
77
return false ;
56
78
alreadyImported [ imp . url ] = true ;
57
79
}
58
80
return true ;
59
- } ) . map ( function ( imp ) {
60
- if ( ! loaderUtils . isUrlRequest ( imp . url ) ) {
81
+ } ) . map ( function ( imp ) {
82
+ if ( ! loaderUtils . isUrlRequest ( imp . url ) ) {
61
83
return "exports.push([module.id, " +
62
84
JSON . stringify ( "@import url(" + imp . url + ");" ) + ", " +
63
85
JSON . stringify ( imp . mediaQuery ) + "]);" ;
@@ -81,22 +103,22 @@ module.exports = function(content, map) {
81
103
// helper for ensuring valid CSS strings from requires
82
104
var urlEscapeHelper = "" ;
83
105
84
- if ( query . url !== false && result . urlItems . length > 0 ) {
106
+ if ( query . url !== false && result . urlItems . length > 0 ) {
85
107
urlEscapeHelper = "var escape = require(" + loaderUtils . stringifyRequest ( this , require . resolve ( "./url/escape.js" ) ) + ");\n" ;
86
108
87
- cssAsString = cssAsString . replace ( result . urlItemRegExpG , function ( item ) {
109
+ cssAsString = cssAsString . replace ( result . urlItemRegExpG , function ( item ) {
88
110
var match = result . urlItemRegExp . exec ( item ) ;
89
111
var idx = + match [ 1 ] ;
90
112
var urlItem = result . urlItems [ idx ] ;
91
113
var url = urlItem . url ;
92
114
idx = url . indexOf ( "?#" ) ;
93
- if ( idx < 0 ) idx = url . indexOf ( "#" ) ;
115
+ if ( idx < 0 ) idx = url . indexOf ( "#" ) ;
94
116
var urlRequest ;
95
- if ( idx > 0 ) { // idx === 0 is catched by isUrlRequest
117
+ if ( idx > 0 ) { // idx === 0 is catched by isUrlRequest
96
118
// in cases like url('webfont.eot?#iefix')
97
119
urlRequest = url . substr ( 0 , idx ) ;
98
120
return "\" + escape(require(" + loaderUtils . stringifyRequest ( this , urlRequest ) + ")) + \"" +
99
- url . substr ( idx ) ;
121
+ url . substr ( idx ) ;
100
122
}
101
123
urlRequest = url ;
102
124
return "\" + escape(require(" + loaderUtils . stringifyRequest ( this , urlRequest ) + ")) + \"" ;
@@ -109,11 +131,11 @@ module.exports = function(content, map) {
109
131
}
110
132
111
133
var moduleJs ;
112
- if ( sourceMap && result . map ) {
134
+ if ( sourceMap && result . map ) {
113
135
// add a SourceMap
114
136
map = result . map ;
115
- if ( map . sources ) {
116
- map . sources = map . sources . map ( function ( source ) {
137
+ if ( map . sources ) {
138
+ map . sources = map . sources . map ( function ( source ) {
117
139
return source . split ( "!" ) . pop ( ) . replace ( / \\ / g, '/' ) ;
118
140
} , this ) ;
119
141
map . sourceRoot = "" ;
0 commit comments