react-static-webpack-plugin
Version:
Build full static sites using React, React Router and Webpack
76 lines (68 loc) • 2.62 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Html = undefined;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _server = require('react-dom/server');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Html = exports.Html = function Html(_ref) {
var _ref$title = _ref.title;
var title = _ref$title === undefined ? 'Rainbow Unicorns' : _ref$title;
var _ref$bundle = _ref.bundle;
var bundle = _ref$bundle === undefined ? '/app.js' : _ref$bundle;
var _ref$body = _ref.body;
var body = _ref$body === undefined ? '' : _ref$body;
var _ref$favicon = _ref.favicon;
var favicon = _ref$favicon === undefined ? '' : _ref$favicon;
var _ref$stylesheet = _ref.stylesheet;
var stylesheet = _ref$stylesheet === undefined ? '' : _ref$stylesheet;
return _react2.default.createElement(
'html',
{ lang: 'en' },
_react2.default.createElement(
'head',
null,
_react2.default.createElement('meta', { charSet: 'utf-8' }),
_react2.default.createElement('meta', { httpEquiv: 'X-UA-Compatible', content: 'IE=edge' }),
_react2.default.createElement('meta', { name: 'viewport', content: 'width=device-width, initial-scale=1' }),
_react2.default.createElement(
'title',
null,
title
),
favicon && _react2.default.createElement('link', { rel: 'shortcut icon', href: favicon }),
stylesheet && _react2.default.createElement('link', { rel: 'stylesheet', href: stylesheet })
),
_react2.default.createElement(
'body',
null,
_react2.default.createElement('div', { id: 'root', dangerouslySetInnerHTML: { __html: body } }),
_react2.default.createElement('script', { src: bundle })
)
);
};
Html.propTypes = {
title: _react.PropTypes.string,
body: _react.PropTypes.string,
bundle: _react.PropTypes.string,
favicon: _react.PropTypes.string,
stylesheet: _react.PropTypes.string
};
/**
* Render the entire web page to a string. We use render to static markup here
* to avoid react hooking on to the document HTML that will not be managed by
* React. The body prop is a string that contains the actual document body,
* which react will hook on to.
*
* We also take this opportunity to prepend the doctype string onto the
* document.
*
* @param {object} props
* @return {string}
*/
Html.renderToDocumentString = function (props) {
return '<!doctype html>' + (0, _server.renderToStaticMarkup)(_react2.default.createElement(Html, props));
};
exports.default = Html;