Skip to content

Commit 3281ed2

Browse files
committed
test: add a test case for custom component id
1 parent 26a8dc1 commit 3281ed2

File tree

7 files changed

+79
-0
lines changed

7 files changed

+79
-0
lines changed

playground/vue-custom-id/Main.vue

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<script setup>
2+
import Foo from './components/Foo.vue'
3+
</script>
4+
5+
<template>
6+
<Foo />
7+
</template>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { expect, test } from 'vitest'
2+
import { page } from '~utils'
3+
4+
test('should render', async () => {
5+
expect(await page.innerHTML('div')).toMatch(
6+
'<h1 data-v-components-foo="">Foo</h1>',
7+
)
8+
})
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<template>
2+
<h1>Foo</h1>
3+
</template>
4+
5+
<style scoped>
6+
h1 {
7+
color: red;
8+
}
9+
</style>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<div id="app"></div>
2+
<script type="module">
3+
import { createApp, defineCustomElement } from 'vue'
4+
import Main from './Main.vue'
5+
6+
createApp(Main).mount('#app')
7+
</script>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "@vitejs/test-vue-custom-id",
3+
"private": true,
4+
"version": "0.0.0",
5+
"scripts": {
6+
"dev": "vite",
7+
"build": "vite build",
8+
"debug": "node --inspect-brk vite",
9+
"preview": "vite preview"
10+
},
11+
"dependencies": {
12+
"vue": "catalog:"
13+
},
14+
"devDependencies": {
15+
"@vitejs/plugin-vue": "workspace:*"
16+
}
17+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { defineConfig } from 'vite'
2+
import vuePlugin from '@vitejs/plugin-vue'
3+
4+
export default defineConfig({
5+
plugins: [
6+
vuePlugin({
7+
features: {
8+
componentIdGenerator: (filename) => {
9+
return filename
10+
.replace(/\.\w+$/, '')
11+
.replace(/[^a-z0-9]/gi, '-')
12+
.toLowerCase()
13+
},
14+
},
15+
}),
16+
],
17+
build: {
18+
// to make tests faster
19+
minify: false,
20+
},
21+
})

pnpm-lock.yaml

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)