1
1
var loaderUtils = require ( 'loader-utils' )
2
+ var assign = require ( 'object-assign' )
2
3
var selectorPath = require . resolve ( './selector' )
3
4
var parserPath = require . resolve ( './parser' )
4
5
@@ -15,23 +16,21 @@ var defaultLoaders = {
15
16
}
16
17
17
18
var rewriters = {
18
- template : require . resolve ( './template-rewriter' ) + '!' ,
19
- style : require . resolve ( './style-rewriter' ) + '!'
19
+ template : require . resolve ( './template-rewriter' ) ,
20
+ style : require . resolve ( './style-rewriter' )
20
21
}
21
22
22
23
module . exports = function ( content ) {
23
24
var self = this
24
25
this . cacheable ( )
25
26
var cb = this . async ( )
26
27
var output = ''
28
+ var options = this . options . vue || { }
27
29
var vueUrl = loaderUtils . getRemainingRequest ( this )
28
30
29
31
// check if there are custom loaders specified with
30
32
// vueLoader.withLoaders(), otherwise use defaults
31
- var loaders = loaderUtils . parseQuery ( this . query )
32
- loaders . html = loaders . html || defaultLoaders . html
33
- loaders . css = loaders . css || defaultLoaders . css
34
- loaders . js = loaders . js || defaultLoaders . js
33
+ var loaders = assign ( { } , defaultLoaders , options . loaders )
35
34
36
35
function getRequire ( type , part , index , scoped ) {
37
36
return 'require(' +
@@ -64,8 +63,8 @@ module.exports = function (content) {
64
63
65
64
function getLoaderString ( type , part , scoped ) {
66
65
var lang = part . lang || defaultLang [ type ]
67
- var rewriter = scoped ? rewriters [ type ] || '' : ''
68
66
var loader = loaders [ lang ]
67
+ var rewriter = getRewriter ( type , scoped )
69
68
if ( loader !== undefined ) {
70
69
// lang with default or pre-configured loader
71
70
if ( loader ) loader += '!'
@@ -83,6 +82,17 @@ module.exports = function (content) {
83
82
}
84
83
}
85
84
85
+ function getRewriter ( type , scoped ) {
86
+ switch ( type ) {
87
+ case 'template' :
88
+ return scoped ? ( rewriters . template + '!' ) : ''
89
+ case 'style' :
90
+ return rewriters . style + ( scoped ? '?scoped=true!' : '!' )
91
+ default :
92
+ return ''
93
+ }
94
+ }
95
+
86
96
function getSelectorString ( type , index ) {
87
97
return selectorPath +
88
98
'?type=' + type +
@@ -164,10 +174,9 @@ module.exports = function (content) {
164
174
} )
165
175
}
166
176
167
- /**
168
- * Expose a way to specify custom loaders to be used at the
169
- * end for the extracted parts of a component.
170
- */
171
- module . exports . withLoaders = function ( opts ) {
172
- return 'vue?' + JSON . stringify ( opts ) . replace ( / ! / g, '\\u0021' )
177
+ module . exports . withLoaders = function ( ) {
178
+ throw new Error (
179
+ 'vue.withLoaders has been deprecated in vue-loader 6.0. ' +
180
+ 'Add a "vue" section to the webpack config instead.'
181
+ )
173
182
}
0 commit comments