@@ -65,10 +65,23 @@ module.exports = function (content) {
65
65
var lang = part . lang || defaultLang [ type ]
66
66
var loader = loaders [ lang ]
67
67
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 /
68
70
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 )
72
85
} else {
73
86
// unknown lang, assume a loader for it is used
74
87
switch ( type ) {
@@ -99,6 +112,14 @@ module.exports = function (content) {
99
112
'&index=' + index + '!'
100
113
}
101
114
115
+ function ensureBang ( loader ) {
116
+ if ( loader . charAt ( loader . length - 1 ) !== '!' ) {
117
+ return loader + '!'
118
+ } else {
119
+ return loader
120
+ }
121
+ }
122
+
102
123
var url = '!!' + parserPath + '!' + vueUrl
103
124
this . loadModule ( url , function ( err , source ) {
104
125
if ( err ) return cb ( err )
0 commit comments