@@ -2,7 +2,7 @@ import postcss from 'postcss';
22
33const declWhitelist = [ 'extends' ] ,
44 declFilter = new RegExp ( `^(${ declWhitelist . join ( '|' ) } )$` ) ,
5- matchImports = / ^ ( [ \w ] + ) f r o m (?: " ( [ ^ " ] + ) " | ' ( [ ^ ' ] + ) ' ) $ / ;
5+ matchImports = / ^ ( [ \w \s ] + ? ) \s + f r o m \s + (?: " ( [ ^ " ] + ) " | ' ( [ ^ ' ] + ) ' ) $ / ;
66
77const processor = ( css ) => {
88 let imports = { } ;
@@ -14,18 +14,23 @@ const processor = (css) => {
1414 let [ /*match*/ , symbols , doubleQuotePath , singleQuotePath ] = matches ;
1515 let path = doubleQuotePath || singleQuotePath ;
1616 imports [ path ] = imports [ path ] || { } ;
17- let tmpSymbols = symbols . split ( ' ' )
18- . map ( s => imports [ path ] [ s ] = `__tmp_${ s } _${ processor . getRandomStr ( ) } ` ) ;
17+ let tmpSymbols = symbols . split ( / \s + / )
18+ . map ( s => {
19+ if ( ! imports [ path ] [ s ] ) {
20+ imports [ path ] [ s ] = `__tmp_${ s } _${ processor . getRandomStr ( ) } ` ;
21+ }
22+ return imports [ path ] [ s ] ;
23+ } ) ;
1924 decl . value = tmpSymbols . join ( ' ' ) ;
2025 }
2126 } ) ;
2227
2328 // If we've found any imports, insert :import rules
24- Object . keys ( imports ) . forEach ( path => {
29+ Object . keys ( imports ) . reverse ( ) . forEach ( path => {
2530 let pathImports = imports [ path ] ;
2631 css . prepend ( postcss . rule ( {
2732 selector : `:import("${ path } ")` ,
28- before : "\n" ,
33+ after : "\n" ,
2934 nodes : Object . keys ( pathImports ) . map ( importedSymbol => postcss . decl ( {
3035 prop : importedSymbol ,
3136 value : pathImports [ importedSymbol ] ,
0 commit comments