UNPKG

@luban-cli/cli-plugin-service

Version:
110 lines 5.81 kB
"use strict"; 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