11var loaderUtils = require ( 'loader-utils' )
2+ var assign = require ( 'object-assign' )
23var selectorPath = require . resolve ( './selector' )
34var parserPath = require . resolve ( './parser' )
45
@@ -15,23 +16,21 @@ var defaultLoaders = {
1516}
1617
1718var 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' )
2021}
2122
2223module . exports = function ( content ) {
2324 var self = this
2425 this . cacheable ( )
2526 var cb = this . async ( )
2627 var output = ''
28+ var options = this . options . vue || { }
2729 var vueUrl = loaderUtils . getRemainingRequest ( this )
2830
2931 // check if there are custom loaders specified with
3032 // 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 )
3534
3635 function getRequire ( type , part , index , scoped ) {
3736 return 'require(' +
@@ -64,8 +63,8 @@ module.exports = function (content) {
6463
6564 function getLoaderString ( type , part , scoped ) {
6665 var lang = part . lang || defaultLang [ type ]
67- var rewriter = scoped ? rewriters [ type ] || '' : ''
6866 var loader = loaders [ lang ]
67+ var rewriter = getRewriter ( type , scoped )
6968 if ( loader !== undefined ) {
7069 // lang with default or pre-configured loader
7170 if ( loader ) loader += '!'
@@ -83,6 +82,17 @@ module.exports = function (content) {
8382 }
8483 }
8584
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+
8696 function getSelectorString ( type , index ) {
8797 return selectorPath +
8898 '?type=' + type +
@@ -164,10 +174,9 @@ module.exports = function (content) {
164174 } )
165175}
166176
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+ )
173182}
0 commit comments