diff --git a/packages/@vue/cli-plugin-router/__tests__/routerGenerator.spec.js b/packages/@vue/cli-plugin-router/__tests__/routerGenerator.spec.js
index 2cf76c8207..b9121c2a3b 100644
--- a/packages/@vue/cli-plugin-router/__tests__/routerGenerator.spec.js
+++ b/packages/@vue/cli-plugin-router/__tests__/routerGenerator.spec.js
@@ -85,6 +85,8 @@ test('use with Vue 3', async () => {
expect(files['src/main.js']).toMatch('.use(router)')
+ expect(files['src/App.vue']).not.toMatch('
')
+
expect(pkg.dependencies).toHaveProperty('vue-router')
expect(pkg.dependencies['vue-router']).toMatch('^4')
})
diff --git a/packages/@vue/cli-plugin-router/generator/template-vue3/src/App.vue b/packages/@vue/cli-plugin-router/generator/template-vue3/src/App.vue
new file mode 100644
index 0000000000..1ca554712f
--- /dev/null
+++ b/packages/@vue/cli-plugin-router/generator/template-vue3/src/App.vue
@@ -0,0 +1,63 @@
+---
+extend: '@vue/cli-service/generator/template/src/App.vue'
+replace:
+ - !!js/regexp /[^]*?<\/template>/
+ - !!js/regexp /\n