@lcap/builder
Version:
lcap builder utils
149 lines (148 loc) • 6.46 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.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;