UNPKG

@lcap/builder

Version:
149 lines (148 loc) 6.46 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.lcapBuild = exports.buildNaslUILibrary = exports.buildManifest = exports.buildI18N = exports.buildNaslUI = exports.buildThemeOld = void 0; /* eslint-disable no-param-reassign */ const fs_extra_1 = __importDefault(require("fs-extra")); const path_1 = __importDefault(require("path")); const logger_1 = __importDefault(require("../utils/logger")); const build_ide_1 = require("./build-ide"); const build_theme_1 = require("./build-theme"); const build_css_info_1 = __importDefault(require("./build-css-info")); const build_extension_1 = require("./build-extension"); const exec_1 = require("../utils/exec"); const gen_nasl_ui_1 = __importDefault(require("./gens/gen-nasl-ui")); const gen_theme_json_old_1 = __importDefault(require("./gens/gen-theme-json-old")); const gen_manifest_config_1 = __importDefault(require("./gens/gen-manifest-config")); const build_declaration_1 = __importDefault(require("./build-declaration")); const build_modules_1 = require("./build-modules"); const utils_1 = require("../utils"); function buildThemeOld(rootPath, destDir) { const configPath = path_1.default.join(rootPath, './lcap-ui.config.js'); const themeConfigPath = path_1.default.join(rootPath, './lcap-ui.theme.json'); if (!fs_extra_1.default.existsSync(configPath) || !fs_extra_1.default.existsSync(themeConfigPath)) { return; } // eslint-disable-next-line import/no-dynamic-require, global-require const confg = require(configPath); (0, gen_theme_json_old_1.default)({ rootPath, destPath: destDir, themePath: confg.themePath, themeConfigPath: 'lcap-ui.theme.json', }); } exports.buildThemeOld = buildThemeOld; function buildNaslUI(options) { if (options.type !== 'nasl.ui') { return; } logger_1.default.start('开始生成 nasl.ui.json...'); let naslUIConfig = (0, gen_nasl_ui_1.default)({ rootPath: options.rootPath, framework: options.framework, components: options.components, assetsPublicPath: options.assetsPublicPath, }); if (options.dependencies && options.dependencies.length > 0) { options.dependencies.forEach(({ rootPath, config }) => { const configFn = typeof config === 'function' ? config : (c) => c; const list = (0, gen_nasl_ui_1.default)({ rootPath, framework: options.framework, components: (0, utils_1.getConfigComponents)(rootPath), assetsPublicPath: options.assetsPublicPath, dependency: true, }); naslUIConfig.unshift(...list.map((it) => configFn(it))); }); } naslUIConfig = naslUIConfig.sort((c1, c2) => { const order1 = c1.order || 20; const order2 = c2.order || 20; return order1 - order2; }); logger_1.default.success('生成 nasl.ui.json 成功!'); fs_extra_1.default.writeJSONSync(path_1.default.join(options.destDir, 'nasl.ui.json'), naslUIConfig, { spaces: 2 }); } exports.buildNaslUI = buildNaslUI; function buildI18N(options) { const { rootPath, i18n, } = options; if (!i18n) { return; } const langs = Object.keys(i18n); if (!langs || langs.length === 0) { logger_1.default.warn('未找到i18n 配置文件'); return; } const data = {}; langs.forEach((key) => { data[key] = fs_extra_1.default.readJSONSync(path_1.default.join(rootPath, i18n[key])); }); const destDir = path_1.default.join(rootPath, options.destDir); if (!fs_extra_1.default.existsSync(destDir)) { fs_extra_1.default.mkdirSync(destDir, { recursive: true }); } const destFile = `${destDir}/i18n.json`; fs_extra_1.default.writeJSONSync(destFile, data, { spaces: 2 }); } exports.buildI18N = buildI18N; function buildManifest(options) { return __awaiter(this, void 0, void 0, function* () { const manifest = yield (0, gen_manifest_config_1.default)(options); fs_extra_1.default.writeJSONSync(`${options.destDir}/manifest.json`, manifest, { spaces: 2 }); fs_extra_1.default.writeJSONSync(`${options.rootPath}/manifest.json`, manifest, { spaces: 2 }); }); } exports.buildManifest = buildManifest; function buildNaslUILibrary(options, mode = 'production') { return __awaiter(this, void 0, void 0, function* () { yield buildNaslUI(options); yield (0, build_css_info_1.default)(options); yield (0, build_theme_1.buildTheme)(options, mode); yield buildI18N(options); yield (0, build_declaration_1.default)(options); if (mode === 'production') { yield (0, build_modules_1.buildModules)(options); } yield buildManifest(options); if (mode !== 'production') { return; } if (options.pnpm) { (0, exec_1.execSync)('pnpm pack'); } else { (0, exec_1.execSync)('npm pack'); } }); } exports.buildNaslUILibrary = buildNaslUILibrary; function lcapBuild(options, mode = 'production') { return __awaiter(this, void 0, void 0, function* () { if (!options.destDir) { options.destDir = 'dist-theme'; } if (mode === 'production') { yield (0, build_ide_1.buildIDE)(options); } if (options.type === 'extension') { yield (0, build_extension_1.buildNaslExtension)(options, mode); return; } yield buildNaslUILibrary(options, mode); }); } exports.lcapBuild = lcapBuild;