dev-toolkit
Version:
Universal Development Toolkit for React Veterans
93 lines (79 loc) • 3.58 kB
JavaScript
;
var _webpack = _interopRequireDefault(require("webpack"));
var _webpackDevMiddleware = _interopRequireDefault(require("webpack-dev-middleware"));
var _webpackHotMiddleware = _interopRequireDefault(require("webpack-hot-middleware"));
var _projectSettings = require("../webpack/projectSettings");
var _config = _interopRequireDefault(require("../webpack/config"));
var _utilities = require("../utilities");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
(0, _utilities.bootstrap)().then(function (_ref) {
var server = _ref.server,
userSettings = _ref.userSettings;
var webpackAssets = {};
var config = (0, _config.default)({
creatingBuild: false,
getWebpackAssets: function getWebpackAssets(assets) {
webpackAssets = assets;
return JSON.stringify(assets);
},
userSettings: userSettings
});
(0, _utilities.log)({
message: 'Starting Webpack…'
}); // Compile with middleware for hot-reloading
var compiler = (0, _webpack.default)(_objectSpread({}, config, {
devtool: 'source-map',
entry: _objectSpread({}, config.entry, {
app: ['webpack-hot-middleware/client'].concat(config.entry.app)
})
}));
(0, _utilities.log)({
message: 'Compiling initial bundle…\n'
});
var webpackDevMiddlewareInstance = (0, _webpackDevMiddleware.default)(compiler, {
stats: 'minimal',
publicPath: config.output.publicPath
});
var webpackHotMiddlewareInstance = (0, _webpackHotMiddleware.default)(compiler);
webpackDevMiddlewareInstance.waitUntilValid(function () {
(0, _utilities.log)({
message: '\n✨ Initial compilation has finished.',
type: 'success'
});
(0, _utilities.log)({
message: 'Attaching dev-middleware & hot-middleware…'
});
try {
server.express.use(webpackDevMiddlewareInstance);
server.express.use(webpackHotMiddlewareInstance);
} catch (error) {
(0, _utilities.help)({
displayedWhen: server && !server.express,
warning: 'Your server needs a `this.express` to be set for attaching webpack middleware.',
instruction: 'Example: `constructor() { this.express = express(); }`',
link: '/dev-toolkit#custom-server',
error: error
});
}
(0, _utilities.log)({
message: 'Starting your Server App…\n',
useSeparator: true
});
try {
server.start({
assets: webpackAssets,
buildFolder: _projectSettings.buildFolder
});
} catch (error) {
(0, _utilities.help)({
displayedWhen: server && typeof server.start !== 'function',
warning: 'Your server needs a `start`-method.',
instruction: 'Example: `start({ assets }) { this.express.listen(2000); }`',
link: '/dev-toolkit#custom-server',
error: error
});
}
});
});