storybook/dist/server/index.js
Jeff Knaggs 776cfa134d Don't serve index from static files
This switch prevents the static files from serving `index.html` as an
index. Fixes #99.
2016-04-12 13:30:50 +12:00

111 lines
3.3 KiB
JavaScript
Executable File

#!/usr/bin/env node
'use strict';
var _webpack = require('webpack');
var _webpack2 = _interopRequireDefault(_webpack);
var _webpackDevMiddleware = require('webpack-dev-middleware');
var _webpackDevMiddleware2 = _interopRequireDefault(_webpackDevMiddleware);
var _webpackHotMiddleware = require('webpack-hot-middleware');
var _webpackHotMiddleware2 = _interopRequireDefault(_webpackHotMiddleware);
var _index = require('./index.html');
var _index2 = _interopRequireDefault(_index);
var _iframe = require('./iframe.html');
var _iframe2 = _interopRequireDefault(_iframe);
var _express = require('express');
var _express2 = _interopRequireDefault(_express);
var _commander = require('commander');
var _commander2 = _interopRequireDefault(_commander);
var _package = require('../../package.json');
var _package2 = _interopRequireDefault(_package);
var _webpack3 = require('./webpack.config');
var _webpack4 = _interopRequireDefault(_webpack3);
var _config = require('./config');
var _config2 = _interopRequireDefault(_config);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _get_head_html = require('./get_head_html');
var _get_head_html2 = _interopRequireDefault(_get_head_html);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
process.env.NODE_ENV = 'production';
var logger = console;
_commander2.default.version(_package2.default.version).option('-p, --port [number]', 'Port to run Storybook (Required)', parseInt).option('-s, --static-dir [dir-name]', 'Directory where to load static files from').option('-c, --config-dir [dir-name]', 'Directory where to load Storybook configurations from').parse(process.argv);
if (!_commander2.default.port) {
logger.error('Error: port to run Storybook is required!\n');
_commander2.default.help();
process.exit(-1);
}
var app = (0, _express2.default)();
if (_commander2.default.staticDir) {
var staticPath = _path2.default.resolve(_commander2.default.staticDir);
if (_fs2.default.existsSync(staticPath)) {
logger.log('=> Loading static files from: ' + staticPath + ' .');
app.use(_express2.default.static(staticPath, { index: false }));
} else {
logger.error('Error: no such directory to load static files: ' + staticPath);
process.exit(-1);
}
}
// Build the webpack configuration using the `baseConfig`
// custom `.babelrc` file and `webpack.config.js` files
var configDir = _commander2.default.configDir || './.storybook';
var config = (0, _config2.default)(_webpack4.default, configDir);
var compiler = (0, _webpack2.default)(config);
var devMiddlewareOptions = {
noInfo: true,
publicPath: config.output.publicPath
};
app.use((0, _webpackDevMiddleware2.default)(compiler, devMiddlewareOptions));
app.use((0, _webpackHotMiddleware2.default)(compiler));
app.get('/', function (req, res) {
res.send((0, _index2.default)());
});
var headHtml = (0, _get_head_html2.default)(configDir);
app.get('/iframe.html', function (req, res) {
res.send((0, _iframe2.default)(headHtml));
});
app.listen(_commander2.default.port, function (error) {
if (error) {
throw error;
} else {
logger.info('\nReact Storybook started on => http://localhost:' + _commander2.default.port + '/ \n');
}
});