@@ -8,14 +8,17 @@ var getImportPrefix = require("./getImportPrefix");
88var compileExports = require ( "./compile-exports" ) ;
99
1010
11- module . exports = function ( content , map ) {
11+ module . exports = function ( content , map ) {
1212 var callback = this . async ( ) ;
1313 var query = loaderUtils . getOptions ( this ) || { } ;
1414 var moduleMode = query . modules ;
1515 var camelCaseKeys = query . camelCase ;
1616 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 ( ) ;
1720
18- if ( sourceMap ) {
21+ if ( sourceMap ) {
1922 if ( map ) {
2023 if ( typeof map === "string" ) {
2124 map = JSON . stringify ( map ) ;
@@ -33,31 +36,50 @@ module.exports = function(content, map) {
3336 map = null ;
3437 }
3538
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+
3658 processCss ( content , map , {
3759 mode : moduleMode ? "local" : "global" ,
38- from : loaderUtils . getRemainingRequest ( this ) . split ( "!" ) . pop ( ) ,
39- to : loaderUtils . getCurrentRequest ( this ) . split ( "!" ) . pop ( ) ,
60+ from : from ,
61+ to : to ,
4062 query : query ,
4163 loaderContext : this ,
4264 sourceMap : sourceMap
43- } , function ( err , result ) {
44- if ( err ) return callback ( err ) ;
65+ } , function ( err , result ) {
66+ if ( err ) return callback ( err ) ;
4567
4668 var cssAsString = JSON . stringify ( result . source ) ;
4769
4870 // for importing CSS
4971 var importUrlPrefix = getImportPrefix ( this , query ) ;
5072
5173 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 ] )
5577 return false ;
5678 alreadyImported [ imp . url ] = true ;
5779 }
5880 return true ;
59- } ) . map ( function ( imp ) {
60- if ( ! loaderUtils . isUrlRequest ( imp . url ) ) {
81+ } ) . map ( function ( imp ) {
82+ if ( ! loaderUtils . isUrlRequest ( imp . url ) ) {
6183 return "exports.push([module.id, " +
6284 JSON . stringify ( "@import url(" + imp . url + ");" ) + ", " +
6385 JSON . stringify ( imp . mediaQuery ) + "]);" ;
@@ -81,22 +103,22 @@ module.exports = function(content, map) {
81103 // helper for ensuring valid CSS strings from requires
82104 var urlEscapeHelper = "" ;
83105
84- if ( query . url !== false && result . urlItems . length > 0 ) {
106+ if ( query . url !== false && result . urlItems . length > 0 ) {
85107 urlEscapeHelper = "var escape = require(" + loaderUtils . stringifyRequest ( this , require . resolve ( "./url/escape.js" ) ) + ");\n" ;
86108
87- cssAsString = cssAsString . replace ( result . urlItemRegExpG , function ( item ) {
109+ cssAsString = cssAsString . replace ( result . urlItemRegExpG , function ( item ) {
88110 var match = result . urlItemRegExp . exec ( item ) ;
89111 var idx = + match [ 1 ] ;
90112 var urlItem = result . urlItems [ idx ] ;
91113 var url = urlItem . url ;
92114 idx = url . indexOf ( "?#" ) ;
93- if ( idx < 0 ) idx = url . indexOf ( "#" ) ;
115+ if ( idx < 0 ) idx = url . indexOf ( "#" ) ;
94116 var urlRequest ;
95- if ( idx > 0 ) { // idx === 0 is catched by isUrlRequest
117+ if ( idx > 0 ) { // idx === 0 is catched by isUrlRequest
96118 // in cases like url('webfont.eot?#iefix')
97119 urlRequest = url . substr ( 0 , idx ) ;
98120 return "\" + escape(require(" + loaderUtils . stringifyRequest ( this , urlRequest ) + ")) + \"" +
99- url . substr ( idx ) ;
121+ url . substr ( idx ) ;
100122 }
101123 urlRequest = url ;
102124 return "\" + escape(require(" + loaderUtils . stringifyRequest ( this , urlRequest ) + ")) + \"" ;
@@ -109,11 +131,11 @@ module.exports = function(content, map) {
109131 }
110132
111133 var moduleJs ;
112- if ( sourceMap && result . map ) {
134+ if ( sourceMap && result . map ) {
113135 // add a SourceMap
114136 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 ) {
117139 return source . split ( "!" ) . pop ( ) . replace ( / \\ / g, '/' ) ;
118140 } , this ) ;
119141 map . sourceRoot = "" ;
0 commit comments