kkt
Version:
Create React apps with no build configuration, Cli tool for creating react apps.
73 lines (71 loc) • 3.32 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getDocsData = getDocsData;
exports.staticDocSetupMiddlewares = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _fsExtra = _interopRequireDefault(require("fs-extra"));
var _express = _interopRequireDefault(require("express"));
var _path = _interopRequireDefault(require("path"));
var _resolvePackagePath = _interopRequireDefault(require("resolve-package-path"));
function getDocsData() {
var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var route = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '/_doc';
var result = {
raw: str,
route: route
};
var dirPath = str;
if (dirPath !== null && dirPath !== void 0 && dirPath.includes(':')) {
var arr = dirPath.split(':');
result.dirPath = arr[0];
result.route = arr[1] || route;
}
if (result.route && !result.route.startsWith('/')) {
result.route = '/' + result.route;
}
// relative directory
if (_fsExtra["default"].existsSync(_path["default"].resolve(dirPath))) {
result.docRoot = _path["default"].resolve(dirPath);
result.pkgPath = (0, _resolvePackagePath["default"])(process.cwd(), process.cwd()) || '';
var pkg = _fsExtra["default"].readJSONSync(result.pkgPath);
result.name = pkg.name;
result.route = '/';
return result;
}
var _ref = dirPath.match(/^([a-zA-Z\-]+|@[a-zA-Z\-]+\/[a-zA-Z\-]+)\/?/i) || [],
_ref2 = (0, _slicedToArray2["default"])(_ref, 2),
_ = _ref2[0],
name = _ref2[1];
result.name = name;
result.pkgPath = (0, _resolvePackagePath["default"])(name, process.cwd()) || '';
result.root = _path["default"].dirname(result.pkgPath).replace(new RegExp("".concat(name.replace('/', _path["default"].sep), "$"), 'ig'), '');
var _str$replace$split = str.replace(name, '').split(':'),
_str$replace$split2 = (0, _slicedToArray2["default"])(_str$replace$split, 1),
repath = _str$replace$split2[0];
result.docRoot = _path["default"].resolve(_path["default"].dirname(result.pkgPath) + repath);
return (0, _objectSpread2["default"])({}, result);
}
/**
* Specify a static service, which can be used for document preview
* @param conf
*/
var staticDocSetupMiddlewares = exports.staticDocSetupMiddlewares = function staticDocSetupMiddlewares(middlewares, devServer, options) {
if (options.docs) {
var _options$config;
var _getDocsData = getDocsData(options.docs),
route = _getDocsData.route,
docRoot = _getDocsData.docRoot;
var routePath = route;
if ((_options$config = options.config) !== null && _options$config !== void 0 && (_options$config = _options$config.output) !== null && _options$config !== void 0 && _options$config.publicPath && typeof options.config.output.publicPath === 'string') {
routePath = options.config.output.publicPath.replace(/\/+$/, '') + route;
}
if (routePath && docRoot) {
devServer.app && devServer.app.use(routePath, _express["default"]["static"](docRoot));
}
}
return middlewares;
};