@luban-cli/cli-plugin-service
Version:
A development runtime environment dependency
110 lines • 5.81 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.produce = exports.produceRoutesAndStore = exports.produceBoilerplate = void 0;
const path_1 = __importDefault(require("path"));
const fs_extra_1 = __importDefault(require("fs-extra"));
const cli_shared_utils_1 = require("@luban-cli/cli-shared-utils");
const serverRender_1 = require("../utils/serverRender");
const generateRoutes_1 = require("../utils/generateRoutes");
function produceBoilerplate(context) {
return __awaiter(this, void 0, void 0, function* () {
cli_shared_utils_1.info("produce boilerplate files ...");
const templatePath = path_1.default.resolve(__dirname, "../template/boilerplate");
const targetPath = `${context}/src/.luban`;
if (fs_extra_1.default.existsSync(targetPath)) {
fs_extra_1.default.removeSync(targetPath);
}
yield fs_extra_1.default.copy(templatePath, targetPath);
});
}
exports.produceBoilerplate = produceBoilerplate;
function produceStore(useStore, context) {
return __awaiter(this, void 0, void 0, function* () {
cli_shared_utils_1.info("produce store file ...");
const templatePath = path_1.default.resolve(__dirname, "../template/dynamic/store.ts.ejs");
const targetPath = `${context}/src/.luban/store.ts`;
if (fs_extra_1.default.existsSync(targetPath)) {
fs_extra_1.default.removeSync(targetPath);
}
const fileContent = yield serverRender_1.renderFile(templatePath, { useStore });
fs_extra_1.default.ensureDirSync(path_1.default.dirname(targetPath));
fs_extra_1.default.writeFileSync(targetPath, fileContent);
});
}
function produceEntry(useStore, context, preparerComponentPath) {
return __awaiter(this, void 0, void 0, function* () {
cli_shared_utils_1.info("produce entry files ...");
const clientEntryTemplatePath = path_1.default.resolve(__dirname, "../template/dynamic/client.entry.tsx.ejs");
const serverEntryTemplatePath = path_1.default.resolve(__dirname, "../template/dynamic/server.entry.tsx.ejs");
const targetClientEntryPath = `${context}/src/.luban/client.entry.tsx`;
const targetServerEntryPath = `${context}/src/.luban/server.entry.tsx`;
if (fs_extra_1.default.existsSync(targetClientEntryPath)) {
fs_extra_1.default.removeSync(targetClientEntryPath);
}
if (fs_extra_1.default.existsSync(targetServerEntryPath)) {
fs_extra_1.default.removeSync(targetServerEntryPath);
}
const isSpecifyPreparer = !!preparerComponentPath;
const clientContent = yield serverRender_1.renderFile(clientEntryTemplatePath, {
useStore,
isSpecifyPreparer,
preparerComponentPath,
});
fs_extra_1.default.ensureDirSync(path_1.default.dirname(targetClientEntryPath));
fs_extra_1.default.writeFileSync(targetClientEntryPath, clientContent);
const serverContent = yield serverRender_1.renderFile(serverEntryTemplatePath, {
useStore,
isSpecifyPreparer,
preparerComponentPath,
});
fs_extra_1.default.ensureDirSync(path_1.default.dirname(targetServerEntryPath));
fs_extra_1.default.writeFileSync(targetServerEntryPath, serverContent);
});
}
function produceRoutesAndStore(context) {
return __awaiter(this, void 0, void 0, function* () {
cli_shared_utils_1.info("produce route files ...");
const targetPath = `${context}/src/.luban`;
const routesFiles = {
"originRoutes.ts": "",
"dynamicRoutes.ts": "",
"staticRoutes.ts": "",
};
const { originRouteCode, dynamicRouteCode, staticRouteCode, useStore, preparerComponentPath, } = yield generateRoutes_1.generateRoutes(context + "/src/index.tsx", context + "/src/route.ts");
routesFiles["originRoutes.ts"] = originRouteCode;
routesFiles["dynamicRoutes.ts"] = dynamicRouteCode;
routesFiles["staticRoutes.ts"] = staticRouteCode;
Object.keys(routesFiles).forEach((name) => {
const _filePath = path_1.default.join(targetPath, name);
fs_extra_1.default.ensureDirSync(path_1.default.dirname(_filePath));
fs_extra_1.default.writeFileSync(_filePath, routesFiles[name]);
});
yield produceStore(useStore, context);
yield produceEntry(useStore, context, preparerComponentPath);
});
}
exports.produceRoutesAndStore = produceRoutesAndStore;
function produce(force = false) {
return __awaiter(this, void 0, void 0, function* () {
const context = process.cwd();
const isLubanDirExists = fs_extra_1.default.existsSync(context + "/src/.luban");
if (!isLubanDirExists || force) {
yield produceBoilerplate(context);
}
yield produceRoutesAndStore(context);
});
}
exports.produce = produce;
//# sourceMappingURL=produce.js.map