[Doc] sync render doc for search crawler

This commit is contained in:
陈嘉涵 2019-05-29 10:20:22 +08:00
parent fecc82e69b
commit 3bc5a93941
4 changed files with 30 additions and 169 deletions

View File

@ -1,5 +1,4 @@
const fs = require('fs-extra');
const glob = require('fast-glob');
const path = require('path');
const uppercamelize = require('uppercamelcase');
const Components = require('./get-components')();
@ -8,8 +7,6 @@ const packageJson = require('../package.json');
const version = process.env.VERSION || packageJson.version;
const tips = `/* eslint-disable */
// This file is auto gererated by build/build-entry.js`;
const root = path.join(__dirname, '../');
const join = dir => path.join(root, dir);
function buildVantEntry() {
const uninstallComponents = [
@ -78,29 +75,5 @@ export default {
fs.writeFileSync(path.join(dir, '../docs/src/demo-entry.js'), content);
}
// generate webpack entry file for markdown docs
function buildDocsEntry() {
const output = join('docs/src/docs-entry.js');
const getName = fullPath => fullPath.replace(/\/(en|zh)/, '.$1').split('/').pop().replace('.md', '');
const docs = glob
.sync([
join('docs/**/*.md'),
join('packages/**/*.md'),
'!**/node_modules/**'
])
.map(fullPath => {
const name = getName(fullPath);
return `'${name}': () => import('${path.relative(join('docs/src'), fullPath).replace(/\\/g, '/')}')`;
});
const content = `${tips}
export default {
${docs.join(',\n ')}
};
`;
fs.writeFileSync(output, content);
}
buildVantEntry();
buildDemoEntry();
buildDocsEntry();

View File

@ -1,131 +0,0 @@
/* eslint-disable */
// This file is auto gererated by build/build-entry.js
export default {
'changelog.en-US': () => import('../markdown/changelog.en-US.md'),
'changelog.zh-CN': () => import('../markdown/changelog.zh-CN.md'),
'contribution.zh-CN': () => import('../markdown/contribution.zh-CN.md'),
'design.zh-CN': () => import('../markdown/design.zh-CN.md'),
'intro.en-US': () => import('../markdown/intro.en-US.md'),
'intro.zh-CN': () => import('../markdown/intro.zh-CN.md'),
'quickstart.en-US': () => import('../markdown/quickstart.en-US.md'),
'quickstart.zh-CN': () => import('../markdown/quickstart.zh-CN.md'),
'style-guide.zh-CN': () => import('../markdown/style-guide.zh-CN.md'),
'theme.en-US': () => import('../markdown/theme.en-US.md'),
'theme.zh-CN': () => import('../markdown/theme.zh-CN.md'),
'action-sheet.en-US': () => import('../../packages/action-sheet/en-US.md'),
'action-sheet.zh-CN': () => import('../../packages/action-sheet/zh-CN.md'),
'address-edit.en-US': () => import('../../packages/address-edit/en-US.md'),
'address-edit.zh-CN': () => import('../../packages/address-edit/zh-CN.md'),
'address-list.en-US': () => import('../../packages/address-list/en-US.md'),
'address-list.zh-CN': () => import('../../packages/address-list/zh-CN.md'),
'area.en-US': () => import('../../packages/area/en-US.md'),
'area.zh-CN': () => import('../../packages/area/zh-CN.md'),
'button.en-US': () => import('../../packages/button/en-US.md'),
'button.zh-CN': () => import('../../packages/button/zh-CN.md'),
'card.en-US': () => import('../../packages/card/en-US.md'),
'card.zh-CN': () => import('../../packages/card/zh-CN.md'),
'cell.en-US': () => import('../../packages/cell/en-US.md'),
'cell.zh-CN': () => import('../../packages/cell/zh-CN.md'),
'checkbox.en-US': () => import('../../packages/checkbox/en-US.md'),
'checkbox.zh-CN': () => import('../../packages/checkbox/zh-CN.md'),
'circle.en-US': () => import('../../packages/circle/en-US.md'),
'circle.zh-CN': () => import('../../packages/circle/zh-CN.md'),
'col.en-US': () => import('../../packages/col/en-US.md'),
'col.zh-CN': () => import('../../packages/col/zh-CN.md'),
'collapse.en-US': () => import('../../packages/collapse/en-US.md'),
'collapse.zh-CN': () => import('../../packages/collapse/zh-CN.md'),
'contact-card.en-US': () => import('../../packages/contact-card/en-US.md'),
'contact-card.zh-CN': () => import('../../packages/contact-card/zh-CN.md'),
'coupon-list.en-US': () => import('../../packages/coupon-list/en-US.md'),
'coupon-list.zh-CN': () => import('../../packages/coupon-list/zh-CN.md'),
'datetime-picker.en-US': () => import('../../packages/datetime-picker/en-US.md'),
'datetime-picker.zh-CN': () => import('../../packages/datetime-picker/zh-CN.md'),
'dialog.en-US': () => import('../../packages/dialog/en-US.md'),
'dialog.zh-CN': () => import('../../packages/dialog/zh-CN.md'),
'dropdown-menu.en-US': () => import('../../packages/dropdown-menu/en-US.md'),
'dropdown-menu.zh-CN': () => import('../../packages/dropdown-menu/zh-CN.md'),
'field.en-US': () => import('../../packages/field/en-US.md'),
'field.zh-CN': () => import('../../packages/field/zh-CN.md'),
'goods-action.en-US': () => import('../../packages/goods-action/en-US.md'),
'goods-action.zh-CN': () => import('../../packages/goods-action/zh-CN.md'),
'icon.en-US': () => import('../../packages/icon/en-US.md'),
'icon.zh-CN': () => import('../../packages/icon/zh-CN.md'),
'image.en-US': () => import('../../packages/image/en-US.md'),
'image.zh-CN': () => import('../../packages/image/zh-CN.md'),
'image-preview.en-US': () => import('../../packages/image-preview/en-US.md'),
'image-preview.zh-CN': () => import('../../packages/image-preview/zh-CN.md'),
'index-bar.en-US': () => import('../../packages/index-bar/en-US.md'),
'index-bar.zh-CN': () => import('../../packages/index-bar/zh-CN.md'),
'lazyload.en-US': () => import('../../packages/lazyload/en-US.md'),
'lazyload.zh-CN': () => import('../../packages/lazyload/zh-CN.md'),
'list.en-US': () => import('../../packages/list/en-US.md'),
'list.zh-CN': () => import('../../packages/list/zh-CN.md'),
'loading.en-US': () => import('../../packages/loading/en-US.md'),
'loading.zh-CN': () => import('../../packages/loading/zh-CN.md'),
'locale.en-US': () => import('../../packages/locale/en-US.md'),
'locale.zh-CN': () => import('../../packages/locale/zh-CN.md'),
'nav-bar.en-US': () => import('../../packages/nav-bar/en-US.md'),
'nav-bar.zh-CN': () => import('../../packages/nav-bar/zh-CN.md'),
'notice-bar.en-US': () => import('../../packages/notice-bar/en-US.md'),
'notice-bar.zh-CN': () => import('../../packages/notice-bar/zh-CN.md'),
'notify.en-US': () => import('../../packages/notify/en-US.md'),
'notify.zh-CN': () => import('../../packages/notify/zh-CN.md'),
'number-keyboard.en-US': () => import('../../packages/number-keyboard/en-US.md'),
'number-keyboard.zh-CN': () => import('../../packages/number-keyboard/zh-CN.md'),
'pagination.en-US': () => import('../../packages/pagination/en-US.md'),
'pagination.zh-CN': () => import('../../packages/pagination/zh-CN.md'),
'panel.en-US': () => import('../../packages/panel/en-US.md'),
'panel.zh-CN': () => import('../../packages/panel/zh-CN.md'),
'password-input.en-US': () => import('../../packages/password-input/en-US.md'),
'password-input.zh-CN': () => import('../../packages/password-input/zh-CN.md'),
'picker.en-US': () => import('../../packages/picker/en-US.md'),
'picker.zh-CN': () => import('../../packages/picker/zh-CN.md'),
'popup.en-US': () => import('../../packages/popup/en-US.md'),
'popup.zh-CN': () => import('../../packages/popup/zh-CN.md'),
'progress.en-US': () => import('../../packages/progress/en-US.md'),
'progress.zh-CN': () => import('../../packages/progress/zh-CN.md'),
'pull-refresh.en-US': () => import('../../packages/pull-refresh/en-US.md'),
'pull-refresh.zh-CN': () => import('../../packages/pull-refresh/zh-CN.md'),
'radio.en-US': () => import('../../packages/radio/en-US.md'),
'radio.zh-CN': () => import('../../packages/radio/zh-CN.md'),
'rate.en-US': () => import('../../packages/rate/en-US.md'),
'rate.zh-CN': () => import('../../packages/rate/zh-CN.md'),
'search.en-US': () => import('../../packages/search/en-US.md'),
'search.zh-CN': () => import('../../packages/search/zh-CN.md'),
'sidebar.en-US': () => import('../../packages/sidebar/en-US.md'),
'sidebar.zh-CN': () => import('../../packages/sidebar/zh-CN.md'),
'skeleton.en-US': () => import('../../packages/skeleton/en-US.md'),
'skeleton.zh-CN': () => import('../../packages/skeleton/zh-CN.md'),
'sku.en-US': () => import('../../packages/sku/en-US.md'),
'sku.zh-CN': () => import('../../packages/sku/zh-CN.md'),
'slider.en-US': () => import('../../packages/slider/en-US.md'),
'slider.zh-CN': () => import('../../packages/slider/zh-CN.md'),
'stepper.en-US': () => import('../../packages/stepper/en-US.md'),
'stepper.zh-CN': () => import('../../packages/stepper/zh-CN.md'),
'steps.en-US': () => import('../../packages/steps/en-US.md'),
'steps.zh-CN': () => import('../../packages/steps/zh-CN.md'),
'style.en-US': () => import('../../packages/style/en-US.md'),
'style.zh-CN': () => import('../../packages/style/zh-CN.md'),
'submit-bar.en-US': () => import('../../packages/submit-bar/en-US.md'),
'submit-bar.zh-CN': () => import('../../packages/submit-bar/zh-CN.md'),
'swipe.en-US': () => import('../../packages/swipe/en-US.md'),
'swipe.zh-CN': () => import('../../packages/swipe/zh-CN.md'),
'swipe-cell.en-US': () => import('../../packages/swipe-cell/en-US.md'),
'swipe-cell.zh-CN': () => import('../../packages/swipe-cell/zh-CN.md'),
'switch.en-US': () => import('../../packages/switch/en-US.md'),
'switch.zh-CN': () => import('../../packages/switch/zh-CN.md'),
'switch-cell.en-US': () => import('../../packages/switch-cell/en-US.md'),
'switch-cell.zh-CN': () => import('../../packages/switch-cell/zh-CN.md'),
'tab.en-US': () => import('../../packages/tab/en-US.md'),
'tab.zh-CN': () => import('../../packages/tab/zh-CN.md'),
'tabbar.en-US': () => import('../../packages/tabbar/en-US.md'),
'tabbar.zh-CN': () => import('../../packages/tabbar/zh-CN.md'),
'tag.en-US': () => import('../../packages/tag/en-US.md'),
'tag.zh-CN': () => import('../../packages/tag/zh-CN.md'),
'toast.en-US': () => import('../../packages/toast/en-US.md'),
'toast.zh-CN': () => import('../../packages/toast/zh-CN.md'),
'tree-select.en-US': () => import('../../packages/tree-select/en-US.md'),
'tree-select.zh-CN': () => import('../../packages/tree-select/zh-CN.md'),
'uploader.en-US': () => import('../../packages/uploader/en-US.md'),
'uploader.zh-CN': () => import('../../packages/uploader/zh-CN.md')
};

View File

@ -1,6 +1,6 @@
import Vue from 'vue';
import VueRouter from 'vue-router';
import VantDoc, { progress } from '@vant/doc';
import VantDoc from '@vant/doc';
import App from './DocsApp';
import routes from './router';
import { isMobile } from './utils';
@ -16,13 +16,11 @@ router.beforeEach((route, redirect, next) => {
if (isMobile) {
location.replace('mobile.html' + location.hash);
}
progress.start();
document.title = route.meta.title || document.title;
next();
});
router.afterEach(() => {
progress.done();
window.scrollTo(0, 0);
Vue.nextTick(() => window.syncPath());
});

View File

@ -1,18 +1,33 @@
import Vue from 'vue';
import docConfig from './doc.config';
import DemoList from './components/DemoList';
import componentDocs from './docs-entry';
import componentDemos from './demo-entry';
import DemoPages from './components/DemoPages';
import './utils/iframe-router';
const registerRoute = (isDemo) => {
const route = [{
path: '*',
redirect: () => `/${Vue.prototype.$vantLang}/`
}];
const docs = {};
Object.keys(docConfig).forEach((lang) => {
function importAll(map, r) {
r.keys().forEach(key => {
map[key] = r(key);
});
}
const docsFromMarkdown = require.context('../markdown', false, /(en-US|zh-CN)\.md$/);
const docsFromPackages = require.context('../../packages', true, /(en-US|zh-CN)\.md$/);
importAll(docs, docsFromMarkdown);
importAll(docs, docsFromPackages);
const registerRoute = isDemo => {
const route = [
{
path: '*',
redirect: () => `/${Vue.prototype.$vantLang}/`
}
];
Object.keys(docConfig).forEach(lang => {
if (isDemo) {
route.push({
path: `/${lang}`,
@ -34,8 +49,14 @@ const registerRoute = (isDemo) => {
let component;
if (path === 'demo') {
component = DemoPages;
} else if (isDemo) {
component = componentDemos[path];
} else {
component = isDemo ? componentDemos[path] : componentDocs[`${path}.${lang}`];
const module =
docs[`./${path}/${lang}.md`] ||
docs[`./${path}.${lang}.md`];
component = module.default;
}
if (!component) {