From 6392a609c1e81295aeb607cbe89a16d3861a7f6b Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 30 Jul 2018 18:04:37 -0400 Subject: [PATCH] feat: add create option for router history mode --- packages/@vue/cli-service/generator/router/index.js | 4 +++- .../generator/router/template/src/router.js | 4 ++++ packages/@vue/cli/lib/add.js | 9 ++++++++- packages/@vue/cli/lib/options.js | 1 + packages/@vue/cli/lib/promptModules/router.js | 10 ++++++++++ 5 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-service/generator/router/index.js b/packages/@vue/cli-service/generator/router/index.js index ec35b3d57..fd0583596 100644 --- a/packages/@vue/cli-service/generator/router/index.js +++ b/packages/@vue/cli-service/generator/router/index.js @@ -6,7 +6,9 @@ module.exports = (api, options) => { 'vue-router': '^3.0.1' } }) - api.render('./template') + api.render('./template', { + historyMode: options.routerHistoryMode + }) if (api.invoking) { api.postProcessFiles(files => { diff --git a/packages/@vue/cli-service/generator/router/template/src/router.js b/packages/@vue/cli-service/generator/router/template/src/router.js index b4a893fee..d74392342 100644 --- a/packages/@vue/cli-service/generator/router/template/src/router.js +++ b/packages/@vue/cli-service/generator/router/template/src/router.js @@ -5,6 +5,10 @@ import Home from './views/Home.vue' Vue.use(Router) export default new Router({ + <%_ if (historyMode) { _%> + mode: 'history', + base: process.env.BASE_URL, + <%_ } _%> routes: [ { path: '/', diff --git a/packages/@vue/cli/lib/add.js b/packages/@vue/cli/lib/add.js index 0829ce387..dff23f3ea 100644 --- a/packages/@vue/cli/lib/add.js +++ b/packages/@vue/cli/lib/add.js @@ -41,9 +41,16 @@ async function add (pluginName, options = {}, context = process.cwd()) { } async function addRouter (context) { + const inquirer = require('inquirer') + const options = await inquirer.prompt([{ + name: 'routerHistoryMode', + type: 'confirm', + message: `Use history mode for router? ${chalk.yellow(`(Requires proper server setup for index fallback in production)`)}` + }]) invoke.runGenerator(context, { id: 'core:router', - apply: loadModule('@vue/cli-service/generator/router', context) + apply: loadModule('@vue/cli-service/generator/router', context), + options }) } diff --git a/packages/@vue/cli/lib/options.js b/packages/@vue/cli/lib/options.js index b2923bac2..be3835480 100644 --- a/packages/@vue/cli/lib/options.js +++ b/packages/@vue/cli/lib/options.js @@ -10,6 +10,7 @@ const rcPath = exports.rcPath = getRcPath('.vuerc') const presetSchema = createSchema(joi => joi.object().keys({ useConfigFiles: joi.boolean(), router: joi.boolean(), + routerHistoryMode: joi.boolean(), vuex: joi.boolean(), cssPreprocessor: joi.string().only(['sass', 'less', 'stylus']), plugins: joi.object().required(), diff --git a/packages/@vue/cli/lib/promptModules/router.js b/packages/@vue/cli/lib/promptModules/router.js index b266e1cf1..49fe5bbeb 100644 --- a/packages/@vue/cli/lib/promptModules/router.js +++ b/packages/@vue/cli/lib/promptModules/router.js @@ -1,3 +1,5 @@ +const chalk = require('chalk') + module.exports = cli => { cli.injectFeature({ name: 'Router', @@ -6,9 +8,17 @@ module.exports = cli => { link: 'https://router.vuejs.org/' }) + cli.injectPrompt({ + name: 'routerHistoryMode', + when: answers => answers.features.includes('router'), + type: 'confirm', + message: `Use history mode for router? ${chalk.yellow(`(Requires proper server setup for index fallback in production)`)}` + }) + cli.onPromptComplete((answers, options) => { if (answers.features.includes('router')) { options.router = true + options.routerHistoryMode = answers.routerHistoryMode } }) }