@@ -6,12 +6,14 @@ var webpack = require('webpack')
66var MemoryFS = require ( 'memory-fs' )
77var expect = require ( 'chai' ) . expect
88var genId = require ( '../lib/gen-id' )
9+ var SSR = require ( 'vue-server-renderer' )
910var compiler = require ( '../lib/template-compiler' )
1011var normalizeNewline = require ( 'normalize-newline' )
1112var ExtractTextPlugin = require ( "extract-text-webpack-plugin" )
1213var SourceMapConsumer = require ( 'source-map' ) . SourceMapConsumer
1314
14- var loaderPath = 'expose-loader?vueModule!' + path . resolve ( __dirname , '../index.js' )
15+ var rawLoaderPath = path . resolve ( __dirname , '../index.js' )
16+ var loaderPath = 'expose-loader?vueModule!' + rawLoaderPath
1517var mfs = new MemoryFS ( )
1618var globalConfig = {
1719 output : {
@@ -49,6 +51,11 @@ function bundle (options, cb) {
4951 console . error ( err . message )
5052 } )
5153 }
54+ if ( stats . compilation . errors ) {
55+ stats . compilation . errors . forEach ( err => {
56+ console . error ( err . message )
57+ } )
58+ }
5259 expect ( stats . compilation . errors ) . to . be . empty
5360 cb ( mfs . readFileSync ( '/test.build.js' ) . toString ( ) )
5461 } )
@@ -511,4 +518,36 @@ describe('vue-loader', function () {
511518 done ( )
512519 } )
513520 } )
521+
522+ it ( 'SSR style extraction' , done => {
523+ bundle ( {
524+ target : 'node' ,
525+ entry : './test/fixtures/ssr-style.js' ,
526+ output : {
527+ path : '/' ,
528+ filename : 'test.build.js' ,
529+ libraryTarget : 'commonjs2'
530+ } ,
531+ externals : [ 'vue' ] ,
532+ module : {
533+ rules : [ { test : / \. v u e $ / , loader : rawLoaderPath } ]
534+ }
535+ } , code => {
536+ const renderer = SSR . createBundleRenderer ( code )
537+ const context = { }
538+ renderer . renderToString ( context , ( err , res ) => {
539+ if ( err ) return done ( err )
540+ expect ( res ) . to . contain ( 'server-rendered' )
541+ expect ( res ) . to . contain ( '<h1>Hello</h1>' )
542+ expect ( res ) . to . contain ( 'Hello from Component A!' )
543+ // from main component
544+ expect ( context . styles ) . to . contain ( 'h1 { color: green;' )
545+ // from imported child component
546+ expect ( context . styles ) . to . contain ( 'comp-a h2 {\n color: #f00;' )
547+ // from imported css file
548+ expect ( context . styles ) . to . contain ( 'h1 { color: red;' )
549+ done ( )
550+ } )
551+ } )
552+ } )
514553} )
0 commit comments