diff --git a/build/build-entry.js b/build/build-entry.js index 6ffe4a56d..b4e6a93b8 100644 --- a/build/build-entry.js +++ b/build/build-entry.js @@ -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(); diff --git a/docs/src/docs-entry.js b/docs/src/docs-entry.js deleted file mode 100644 index c5f713a25..000000000 --- a/docs/src/docs-entry.js +++ /dev/null @@ -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') -}; diff --git a/docs/src/index.js b/docs/src/index.js index b217cdc05..15dc5f698 100644 --- a/docs/src/index.js +++ b/docs/src/index.js @@ -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()); }); diff --git a/docs/src/router.js b/docs/src/router.js index 603651b53..de212ac21 100644 --- a/docs/src/router.js +++ b/docs/src/router.js @@ -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) {