Skip to content

Commit 6392a60

Browse files
committed
feat: add create option for router history mode
1 parent 2a21612 commit 6392a60

File tree

5 files changed

+26
-2
lines changed

5 files changed

+26
-2
lines changed

packages/@vue/cli-service/generator/router/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ module.exports = (api, options) => {
66
'vue-router': '^3.0.1'
77
}
88
})
9-
api.render('./template')
9+
api.render('./template', {
10+
historyMode: options.routerHistoryMode
11+
})
1012

1113
if (api.invoking) {
1214
api.postProcessFiles(files => {

packages/@vue/cli-service/generator/router/template/src/router.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ import Home from './views/Home.vue'
55
Vue.use(Router)
66

77
export default new Router({
8+
<%_ if (historyMode) { _%>
9+
mode: 'history',
10+
base: process.env.BASE_URL,
11+
<%_ } _%>
812
routes: [
913
{
1014
path: '/',

packages/@vue/cli/lib/add.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,16 @@ async function add (pluginName, options = {}, context = process.cwd()) {
4141
}
4242

4343
async function addRouter (context) {
44+
const inquirer = require('inquirer')
45+
const options = await inquirer.prompt([{
46+
name: 'routerHistoryMode',
47+
type: 'confirm',
48+
message: `Use history mode for router? ${chalk.yellow(`(Requires proper server setup for index fallback in production)`)}`
49+
}])
4450
invoke.runGenerator(context, {
4551
id: 'core:router',
46-
apply: loadModule('@vue/cli-service/generator/router', context)
52+
apply: loadModule('@vue/cli-service/generator/router', context),
53+
options
4754
})
4855
}
4956

packages/@vue/cli/lib/options.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const rcPath = exports.rcPath = getRcPath('.vuerc')
1010
const presetSchema = createSchema(joi => joi.object().keys({
1111
useConfigFiles: joi.boolean(),
1212
router: joi.boolean(),
13+
routerHistoryMode: joi.boolean(),
1314
vuex: joi.boolean(),
1415
cssPreprocessor: joi.string().only(['sass', 'less', 'stylus']),
1516
plugins: joi.object().required(),

packages/@vue/cli/lib/promptModules/router.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
const chalk = require('chalk')
2+
13
module.exports = cli => {
24
cli.injectFeature({
35
name: 'Router',
@@ -6,9 +8,17 @@ module.exports = cli => {
68
link: 'https://router.vuejs.org/'
79
})
810

11+
cli.injectPrompt({
12+
name: 'routerHistoryMode',
13+
when: answers => answers.features.includes('router'),
14+
type: 'confirm',
15+
message: `Use history mode for router? ${chalk.yellow(`(Requires proper server setup for index fallback in production)`)}`
16+
})
17+
918
cli.onPromptComplete((answers, options) => {
1019
if (answers.features.includes('router')) {
1120
options.router = true
21+
options.routerHistoryMode = answers.routerHistoryMode
1222
}
1323
})
1424
}

0 commit comments

Comments
 (0)