1111
1212const webpack = require ( 'webpack' ) ;
1313const ExtractTextPlugin = require ( 'extract-text-webpack-plugin' ) ;
14+ const extractText = require ( './loaders/extract-text' ) ;
1415const ManifestPlugin = require ( './webpack/webpack-manifest-plugin' ) ;
1516const DeleteUnusedEntriesJSPlugin = require ( './webpack/delete-unused-entries-js-plugin' ) ;
1617const AssetOutputDisplayPlugin = require ( './friendly-errors/asset-output-display-plugin' ) ;
@@ -21,12 +22,15 @@ const missingLoaderTransformer = require('./friendly-errors/transformers/missing
2122const missingLoaderFormatter = require ( './friendly-errors/formatters/missing-loader' ) ;
2223const missingPostCssConfigTransformer = require ( './friendly-errors/transformers/missing-postcss-config' ) ;
2324const missingPostCssConfigFormatter = require ( './friendly-errors/formatters/missing-postcss-config' ) ;
25+ const vueUnactivatedLoaderTransformer = require ( './friendly-errors/transformers/vue-unactivated-loader-error' ) ;
26+ const vueUnactivatedLoaderFormatter = require ( './friendly-errors/formatters/vue-unactivated-loader-error' ) ;
2427const pathUtil = require ( './config/path-util' ) ;
2528const cssLoaderUtil = require ( './loaders/css' ) ;
2629const sassLoaderUtil = require ( './loaders/sass' ) ;
2730const lessLoaderUtil = require ( './loaders/less' ) ;
2831const babelLoaderUtil = require ( './loaders/babel' ) ;
2932const tsLoaderUtil = require ( './loaders/typescript' ) ;
33+ const vueLoaderUtil = require ( './loaders/vue' ) ;
3034
3135class ConfigGenerator {
3236 /**
@@ -68,12 +72,15 @@ class ConfigGenerator {
6872
6973 config . stats = this . buildStatsConfig ( ) ;
7074
71- let extensions = [ '.js' , '.jsx' , '.ts' , '.tsx' ] ;
72-
7375 config . resolve = {
74- extensions : extensions
76+ extensions : [ '.js' , '.jsx' , '.vue' , '.ts' , '.tsx' ] ;
77+ alias: { }
7578 } ;
7679
80+ if ( this . webpackConfig . useVueLoader ) {
81+ config . resolve . alias [ 'vue$' ] = 'vue/dist/vue.esm.js' ;
82+ }
83+
7784 return config ;
7885 }
7986
@@ -114,10 +121,7 @@ class ConfigGenerator {
114121 } ,
115122 {
116123 test : / \. c s s $ / ,
117- use : ExtractTextPlugin . extract ( {
118- fallback : 'style-loader' + this . getSourceMapOption ( ) ,
119- use : cssLoaderUtil . getLoaders ( this . webpackConfig )
120- } )
124+ use : extractText . extract ( this . webpackConfig , cssLoaderUtil . getLoaders ( this . webpackConfig , false ) )
121125 } ,
122126 {
123127 test : / \. ( p n g | j p g | j p e g | g i f | i c o | s v g ) $ / ,
@@ -140,20 +144,21 @@ class ConfigGenerator {
140144 if ( this . webpackConfig . useSassLoader ) {
141145 rules . push ( {
142146 test : / \. s [ a c ] s s $ / ,
143- use : ExtractTextPlugin . extract ( {
144- fallback : 'style-loader' + this . getSourceMapOption ( ) ,
145- use : sassLoaderUtil . getLoaders ( this . webpackConfig )
146- } )
147+ use : extractText . extract ( this . webpackConfig , sassLoaderUtil . getLoaders ( this . webpackConfig ) )
147148 } ) ;
148149 }
149150
150151 if ( this . webpackConfig . useLessLoader ) {
151152 rules . push ( {
152153 test : / \. l e s s / ,
153- use : ExtractTextPlugin . extract ( {
154- fallback : 'style-loader' + this . getSourceMapOption ( ) ,
155- use : lessLoaderUtil . getLoaders ( this . webpackConfig )
156- } )
154+ use : extractText . extract ( this . webpackConfig , lessLoaderUtil . getLoaders ( this . webpackConfig ) )
155+ } ) ;
156+ }
157+
158+ if ( this . webpackConfig . useVueLoader ) {
159+ rules . push ( {
160+ test : / \. v u e $ / ,
161+ use : vueLoaderUtil . getLoaders ( this . webpackConfig , this . webpackConfig . vueLoaderOptionsCallback )
157162 } ) ;
158163 }
159164
@@ -324,11 +329,13 @@ class ConfigGenerator {
324329 clearConsole : false ,
325330 additionalTransformers : [
326331 missingLoaderTransformer ,
327- missingPostCssConfigTransformer
332+ missingPostCssConfigTransformer ,
333+ vueUnactivatedLoaderTransformer
328334 ] ,
329335 additionalFormatters : [
330336 missingLoaderFormatter ,
331- missingPostCssConfigFormatter
337+ missingPostCssConfigFormatter ,
338+ vueUnactivatedLoaderFormatter
332339 ] ,
333340 compilationSuccessInfo : {
334341 messages : [ ]
@@ -388,10 +395,6 @@ class ConfigGenerator {
388395 https : this . webpackConfig . useDevServerInHttps ( )
389396 } ;
390397 }
391-
392- getSourceMapOption ( ) {
393- return this . webpackConfig . useSourceMaps ? '?sourceMap' : '' ;
394- }
395398}
396399
397400/**
0 commit comments