@@ -65,10 +65,23 @@ module.exports = function (content) {
6565 var lang = part . lang || defaultLang [ type ]
6666 var loader = loaders [ lang ]
6767 var rewriter = getRewriter ( type , scoped )
68+ var cssRE = / \b ( c s s ! ? ) \b /
69+ var htmlRE = / \b ( ( v u e - ) ? h t m l ! ? ) \b /
6870 if ( loader !== undefined ) {
69- // lang with default or pre-configured loader
70- if ( loader ) loader += '!'
71- return loader + rewriter
71+ // inject rewriter before css/html loader for
72+ // extractTextPlugin use cases
73+ if ( cssRE . test ( loader ) ) {
74+ loader = loader . replace ( cssRE , function ( m , $1 ) {
75+ return ensureBang ( $1 ) + rewriter
76+ } )
77+ } else if ( htmlRE . test ( loader ) ) {
78+ loader = loader . replace ( htmlRE , function ( m , $1 ) {
79+ return ensureBang ( $1 ) + rewriter
80+ } )
81+ } else {
82+ loader = ensureBang ( loader ) + rewriter
83+ }
84+ return ensureBang ( loader )
7285 } else {
7386 // unknown lang, assume a loader for it is used
7487 switch ( type ) {
@@ -99,6 +112,14 @@ module.exports = function (content) {
99112 '&index=' + index + '!'
100113 }
101114
115+ function ensureBang ( loader ) {
116+ if ( loader . charAt ( loader . length - 1 ) !== '!' ) {
117+ return loader + '!'
118+ } else {
119+ return loader
120+ }
121+ }
122+
102123 var url = '!!' + parserPath + '!' + vueUrl
103124 this . loadModule ( url , function ( err , source ) {
104125 if ( err ) return cb ( err )
0 commit comments