UNPKG

@mypaas/hcm-cli

Version:

Vant Cli 是一个 Vue 组件库构建工具,通过 Vant Cli 可以快速搭建一套功能完备的 Vue 组件库。

76 lines (72 loc) 2.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.genSiteMobileShared = void 0; const path_1 = require("path"); const fs_extra_1 = require("fs-extra"); const constant_1 = require("../common/constant"); const common_1 = require("../common"); function genInstall() { return `import Vue from 'vue'; import PackageEntry from './package-entry'; import './package-style'; `; } function genImports(demos) { return demos .map(item => `import ${item.name} from '${common_1.removeExt(common_1.normalizePath(item.path))}';`) .join('\n'); } function genExports(demos) { return `export const demos = {\n ${demos .map(item => item.name) .join(',\n ')}\n};`; } function getSetName(demos) { return demos .map(item => `${item.name}.name = 'demo-${item.component}';`) .join('\n'); } function genConfig(demos) { const vantConfig = common_1.getVantConfig(); const demoNames = demos.map(item => common_1.decamelize(item.name)); function demoFilter(nav) { return nav.filter(group => { group.items = group.items.filter((item) => demoNames.includes(item.path)); return group.items.length; }); } const { nav, locales } = vantConfig.site; if (locales) { Object.keys(locales).forEach((lang) => { if (locales[lang].nav) { locales[lang].nav = demoFilter(locales[lang].nav); } }); } else if (nav) { vantConfig.site.nav = demoFilter(nav); } return `export const config = ${JSON.stringify(vantConfig, null, 2)}`; } function genCode(components) { const demos = components .map(component => ({ component, name: common_1.pascalize(component), path: path_1.join(constant_1.SRC_DIR, component, 'demo/index.vue'), })) .filter(item => fs_extra_1.existsSync(item.path)); return `${genInstall()} ${genImports(demos)} Vue.use(PackageEntry); ${getSetName(demos)} ${genExports(demos)} ${genConfig(demos)} `; } function genSiteMobileShared() { const dirs = fs_extra_1.readdirSync(constant_1.SRC_DIR).filter(common_1.getIgnoreComponentFilter((dir, ignores) => !ignores.includes(dir))); const code = genCode(dirs); common_1.smartOutputFile(constant_1.SITE_MODILE_SHARED_FILE, code); } exports.genSiteMobileShared = genSiteMobileShared;