feat: add create option for router history mode

This commit is contained in:
Evan You
2018-07-30 18:04:37 -04:00
parent 2a216126f1
commit 6392a609c1
5 changed files with 26 additions and 2 deletions

View File

@@ -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 => {

View File

@@ -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: '/',

View File

@@ -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
})
}

View File

@@ -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(),

View File

@@ -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
}
})
}