kkt
Version:
Create React apps with no build configuration, Cli tool for creating react apps.
73 lines (71 loc) • 3.36 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 (!route.startsWith('/')) {
route = '/' + 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 _dirPath$match = dirPath.match(/^([a-zA-Z\-]+|@[a-zA-Z\-]+\/[a-zA-Z\-]+)\/?/i),
_dirPath$match2 = (0, _slicedToArray2["default"])(_dirPath$match, 2),
_ = _dirPath$match2[0],
name = _dirPath$match2[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 = function staticDocSetupMiddlewares(middlewares, devServer, options) {
if (options.docs) {
var _options$config, _options$config$outpu;
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$outpu = _options$config.output) !== null && _options$config$outpu !== void 0 && _options$config$outpu.publicPath && typeof options.config.output.publicPath === 'string') {
routePath = options.config.output.publicPath.replace(/\/+$/, '') + route;
}
devServer.app.use(routePath, _express["default"]["static"](docRoot));
}
return middlewares;
};
exports.staticDocSetupMiddlewares = staticDocSetupMiddlewares;
//# sourceMappingURL=staticDoc.js.map
;