11/* eslint no-console: 0 */
22
3- import React from 'react ' ;
3+ import fsp from 'fs-promise ' ;
44import path from 'path' ;
5+ import React from 'react' ;
6+ import ReactDOMServer from 'react-dom/server' ;
57import Router from 'react-router' ;
6- import routes from './src/Routes' ;
8+ import Location from 'react-router/lib/Location' ;
9+
710import Root from './src/Root' ;
8- import fsp from 'fs-promise' ;
9- import { copy } from '../tools/fs-utils' ;
10- import { exec } from '../tools/exec' ;
11+ import routes from './src/Routes' ;
12+
1113import metadata from './generate-metadata' ;
1214
15+ import { copy } from '../tools/fs-utils' ;
16+ import { exec } from '../tools/exec' ;
17+
1318const repoRoot = path . resolve ( __dirname , '../' ) ;
1419const docsBuilt = path . join ( repoRoot , 'docs-built' ) ;
1520
@@ -24,12 +29,14 @@ const readmeDest = path.join(docsBuilt, 'README.md');
2429 * @return {Promise } promise
2530 * @internal
2631 */
27- function generateHTML ( fileName , propData ) {
28- return new Promise ( ( resolve , reject ) => {
32+ function generateHTML ( fileName ) {
33+ return new Promise ( ( resolve ) => {
2934 const urlSlug = fileName === 'index.html' ? '/' : `/${ fileName } ` ;
3035
31- Router . run ( routes , urlSlug , Handler => {
32- let html = React . renderToString ( React . createElement ( Handler , { propData } ) ) ;
36+ Router . run ( routes , new Location ( urlSlug ) , ( error , initialState ) => {
37+ let html = ReactDOMServer . renderToString (
38+ < Router { ...initialState } />
39+ ) ;
3340 html = '<!doctype html>' + html ;
3441 let write = fsp . writeFile ( path . join ( docsBuilt , fileName ) , html ) ;
3542 resolve ( write ) ;
@@ -46,8 +53,10 @@ export default function BuildDocs({dev}) {
4653 . then ( ( ) => fsp . mkdir ( docsBuilt ) )
4754 . then ( metadata )
4855 . then ( propData => {
56+ Root . assetBaseUrl = '' ;
57+ Root . propData = propData ;
4958
50- let pagesGenerators = Root . getPages ( ) . map ( page => generateHTML ( page , propData ) ) ;
59+ const pagesGenerators = Root . getPages ( ) . map ( generateHTML ) ;
5160
5261 return Promise . all ( pagesGenerators . concat ( [
5362 exec ( `webpack --config webpack.docs.js --bail ${ devOption } ` ) ,
0 commit comments