From 8ca524d9ac14f5a50ae762b1205e98d9420d4d06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=98=89=E6=B6=B5?= Date: Wed, 9 Aug 2017 16:19:45 +0800 Subject: [PATCH] load doc && demo in demand --- .babelrc | 4 ++- build/webpack.config.dev.js | 10 +++++--- build/webpack.config.prod.js | 3 ++- docs/src/doc.config.js | 4 +++ docs/src/index.js | 11 -------- docs/src/router.config.js | 27 +++++++++----------- package.json | 14 +++++------ yarn.lock | 49 ++++++++++++++++++++++-------------- 8 files changed, 65 insertions(+), 57 deletions(-) diff --git a/.babelrc b/.babelrc index c72eeb3a2..0e5cba99a 100644 --- a/.babelrc +++ b/.babelrc @@ -2,7 +2,9 @@ "presets": [ [ "es2015", - { "modules": false } + { + "modules": false + } ] ], "plugins": [ diff --git a/build/webpack.config.dev.js b/build/webpack.config.dev.js index 9cad7ac96..87105c112 100644 --- a/build/webpack.config.dev.js +++ b/build/webpack.config.dev.js @@ -14,7 +14,6 @@ require('./genExamples')(isProduction); module.exports = { entry: { - vendor: ['vue', 'vue-router', 'zan-doc'], 'vant-docs': './docs/src/index.js', 'vant-examples': './docs/src/examples.js' }, @@ -22,7 +21,8 @@ module.exports = { path: path.join(__dirname, '../docs/dist'), publicPath: '/', filename: '[name].js', - umdNamedDefine: true + umdNamedDefine: true, + chunkFilename: 'async.[name].js' }, devServer: { historyApiFallback: { @@ -37,7 +37,7 @@ module.exports = { modules: [path.join(__dirname, '../node_modules'), 'node_modules'], extensions: ['.js', '.vue', '.css'], alias: { - vue$: 'vue/dist/vue.esm.js', + vue: 'vue/dist/vue.esm.js', src: path.join(__dirname, '../src'), packages: path.join(__dirname, '../packages'), lib: path.join(__dirname, '../lib'), @@ -131,6 +131,10 @@ module.exports = { filename: 'examples.html', inject: true }), + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', + minChunks: 2 + }), new webpack.HotModuleReplacementPlugin(), new OptimizeCssAssetsPlugin(), new ExtractTextPlugin({ diff --git a/build/webpack.config.prod.js b/build/webpack.config.prod.js index d4a45855b..6bbdb5725 100644 --- a/build/webpack.config.prod.js +++ b/build/webpack.config.prod.js @@ -8,7 +8,8 @@ module.exports = merge(devConfig, { path: path.join(__dirname, '../docs/dist'), publicPath: 'https://b.yzcdn.cn/zanui/vue', filename: '[name].[hash:8].js', - umdNamedDefine: true + umdNamedDefine: true, + chunkFilename: 'async.[name].[chunkhash:8].js' }, devtool: false, plugins: [ diff --git a/docs/src/doc.config.js b/docs/src/doc.config.js index b58bf3a99..d77c272c0 100644 --- a/docs/src/doc.config.js +++ b/docs/src/doc.config.js @@ -30,6 +30,10 @@ module.exports = { "path": "/changelog", "title": "更新日志", noExample: true + }, + { + "title": "业务组件", + "link": "/zanui/captain/component/quickstart" } ] } diff --git a/docs/src/index.js b/docs/src/index.js index 2f7c3b729..f26018406 100644 --- a/docs/src/index.js +++ b/docs/src/index.js @@ -2,16 +2,9 @@ import Vue from 'vue'; import VueRouter from 'vue-router'; import App from './ExamplesDocsApp'; import routes from './router.config'; -import ZanUI from 'src/index.js'; import ZanDoc from 'zan-doc'; -import packageJson from '../../package.json'; import DemoBlock from './components/demo-block'; -const global = { - version: packageJson.version -}; -window._global = global; - import '../assets/docs.css'; import 'packages/vant-css/src/index.css'; @@ -22,11 +15,7 @@ function isMobile() { } Vue.use(VueRouter); -Vue.use(ZanUI); Vue.use(ZanDoc); -Vue.use(ZanUI.Lazyload, { - lazyComponent: true -}); Vue.component('demo-block', DemoBlock); const routesConfig = routes(); diff --git a/docs/src/router.config.js b/docs/src/router.config.js index 19d7ad0a3..b49e01ca1 100644 --- a/docs/src/router.config.js +++ b/docs/src/router.config.js @@ -1,4 +1,6 @@ const navs = require('./doc.config')['zh-CN'].nav; +import componentDocs from '../examples-dist/entry-docs'; +import componentDemos from '../examples-dist/entry-demos'; const registerRoute = (isExample) => { let route = []; @@ -9,31 +11,26 @@ const registerRoute = (isExample) => { if (nav.groups) { nav.groups.forEach(group => { - group.list.forEach(nav => { - addRoute(nav); - }); + group.list.forEach(addRoute); }); } else if (nav.children) { - nav.children.forEach(nav => { - addRoute(nav); - }); + nav.children.forEach(addRoute); } else { addRoute(nav); } }); function addRoute(page) { - const component = isExample - ? require(`../examples-dist${page.path}.vue`) - : require(`../examples-docs${page.path}.md`); - route.push({ - path: '/component' + page.path, - component: component.default || component - }); + const { path } = page; + if (path) { + const name = path.replace('/', ''); + route.push({ + path: '/component' + path, + component: isExample ? componentDemos[name] : componentDocs[name] + }); + } } - // console.log(route); - return route; }; diff --git a/package.json b/package.json index 1c9bdb766..594249814 100644 --- a/package.json +++ b/package.json @@ -60,10 +60,10 @@ "babel-polyfill": "^6.23.0", "babel-preset-es2015": "^6.16.0", "babel-runtime": "^6.25.0", - "chai": "^4.1.0", + "chai": "^4.1.1", "cheerio": "^0.22.0", "codecov": "^2.2.0", - "cross-env": "^5.0.1", + "cross-env": "^5.0.5", "css-loader": "^0.28.4", "eslint-plugin-vue": "^2.1.0", "extract-text-webpack-plugin": "2.1.2", @@ -87,7 +87,7 @@ "karma-spec-reporter": "^0.0.31", "karma-webpack": "^2.0.4", "lerna": "^2.0.0", - "markdown-it": "^8.3.1", + "markdown-it": "^8.3.2", "markdown-it-container": "^2.0.0", "mocha": "^3.4.2", "optimize-css-assets-webpack-plugin": "^3.0.0", @@ -106,15 +106,15 @@ "vue": "^2.4.2", "vue-hot-reload-api": "^2.1.0", "vue-html-loader": "^1.2.4", - "vue-loader": "^13.0.2", + "vue-loader": "^13.0.4", "vue-markdown-loader": "^2.0.0", "vue-router": "^2.7.0", "vue-style-loader": "^3.0.0", "vue-template-compiler": "^2.4.2", "vue-template-es2015-compiler": "^1.5.3", - "webpack": "^3.4.1", - "webpack-dev-server": "^2.6.1", + "webpack": "^3.5.1", + "webpack-dev-server": "^2.7.1", "webpack-merge": "^4.1.0", - "zan-doc": "^0.1.4" + "zan-doc": "0.1.10" } } diff --git a/yarn.lock b/yarn.lock index 1efbcb83a..6bd4675cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1147,9 +1147,9 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chai@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.0.tgz#331a0391b55c3af8740ae9c3b7458bc1c3805e6d" +chai@^4.1.1: + version "4.1.1" + resolved "http://registry.npm.qima-inc.com/chai/download/chai-4.1.1.tgz#66e21279e6f3c6415ff8231878227900e2171b39" dependencies: assertion-error "^1.0.1" check-error "^1.0.1" @@ -1787,9 +1787,9 @@ create-hmac@^1.1.0, create-hmac@^1.1.2: create-hash "^1.1.0" inherits "^2.0.1" -cross-env@^5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.0.3.tgz#8f55acef7469fed364f4039a9f7ece90191e3981" +cross-env@^5.0.5: + version "5.0.5" + resolved "http://registry.npm.qima-inc.com/cross-env/download/cross-env-5.0.5.tgz#4383d364d9660873dd185b398af3bfef5efffef3" dependencies: cross-spawn "^5.1.0" is-windows "^1.0.0" @@ -3854,7 +3854,7 @@ invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" -ip@^1.1.0: +ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -4856,6 +4856,16 @@ markdown-it@^8.3.1: mdurl "^1.0.1" uc.micro "^1.0.3" +markdown-it@^8.3.2: + version "8.3.2" + resolved "http://registry.npm.qima-inc.com/markdown-it/download/markdown-it-8.3.2.tgz#df4b86530d17c3bc9beec3b68d770b92ea17ae96" + dependencies: + argparse "^1.0.7" + entities "~1.1.1" + linkify-it "^2.0.0" + mdurl "^1.0.1" + uc.micro "^1.0.3" + math-expression-evaluator@^1.2.14: version "1.2.16" resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9" @@ -7693,9 +7703,9 @@ vue-lazyload@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/vue-lazyload/-/vue-lazyload-1.0.6.tgz#7d5494fc35c35fc84dcc271165b827e309b4e793" -vue-loader@^13.0.2: - version "13.0.3" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-13.0.3.tgz#b38d0fcd9818ae7b6a02932410d34943f9c9466d" +vue-loader@^13.0.4: + version "13.0.4" + resolved "http://registry.npm.qima-inc.com/vue-loader/download/vue-loader-13.0.4.tgz#0a6d893698735fcf7037b20a23d724cb39eee7d4" dependencies: consolidate "^0.14.0" hash-sum "^1.0.2" @@ -7789,9 +7799,9 @@ webpack-dev-middleware@^1.11.0: range-parser "^1.0.3" time-stamp "^2.0.0" -webpack-dev-server@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.6.1.tgz#0b292a9da96daf80a65988f69f87b4166e5defe7" +webpack-dev-server@^2.7.1: + version "2.7.1" + resolved "http://registry.npm.qima-inc.com/webpack-dev-server/download/webpack-dev-server-2.7.1.tgz#21580f5a08cd065c71144cf6f61c345bca59a8b8" dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -7803,6 +7813,7 @@ webpack-dev-server@^2.6.1: html-entities "^1.2.0" http-proxy-middleware "~0.17.4" internal-ip "^1.2.0" + ip "^1.1.5" loglevel "^1.4.1" opn "4.0.2" portfinder "^1.0.9" @@ -7829,9 +7840,9 @@ webpack-sources@^1.0.1: source-list-map "^2.0.0" source-map "~0.5.3" -webpack@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.4.1.tgz#4c3f4f3fb318155a4db0cb6a36ff05c5697418f4" +webpack@^3.5.1: + version "3.5.1" + resolved "http://registry.npm.qima-inc.com/webpack/download/webpack-3.5.1.tgz#b749ee3d2b5a118dad53e8e41585b3f71e75499a" dependencies: acorn "^5.0.0" acorn-dynamic-import "^2.0.0" @@ -8057,9 +8068,9 @@ yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" -zan-doc@^0.1.4: - version "0.1.8" - resolved "https://registry.yarnpkg.com/zan-doc/-/zan-doc-0.1.8.tgz#e452f9afc29ff292106858f938a9604b82bb8120" +zan-doc@0.1.10: + version "0.1.10" + resolved "http://registry.npm.qima-inc.com/zan-doc/download/zan-doc-0.1.10.tgz#4a8b06d851315c2cd4092c9d770024c7a61b8099" dependencies: cheerio "0.22.0" decamelize "^1.2.0"