Skip to content

Commit 6474975

Browse files
committed
FEATURE | Add support for SFC with shadowroot option and nested style
1 parent be608ce commit 6474975

19 files changed

+223
-62
lines changed

demo-SFC-vite/.gitignore

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
pnpm-debug.log*
8+
lerna-debug.log*
9+
10+
node_modules
11+
dist
12+
dist-ssr
13+
*.local
14+
15+
# Editor directories and files
16+
.vscode/*
17+
!.vscode/extensions.json
18+
.idea
19+
.DS_Store
20+
*.suo
21+
*.ntvs*
22+
*.njsproj
23+
*.sln
24+
*.sw?

demo-SFC-vite/index.html

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7+
<title>SFC-Web-comoponent</title>
8+
</head>
9+
<body>
10+
<hr>
11+
<h1>SFC-Web-comoponent</h1>
12+
<my-component></my-component>
13+
<script type="module" src="./dist/my-component.es.js"></script>
14+
</body>
15+
</html>

demo-SFC-vite/package.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"name": "my-vue-app",
3+
"private": true,
4+
"version": "0.0.0",
5+
"type": "module",
6+
"scripts": {
7+
"dev": "vite",
8+
"build": "vite build",
9+
"preview": "vite preview"
10+
},
11+
"dependencies": {
12+
"vue": "^3.4.21"
13+
},
14+
"devDependencies": {
15+
"@vitejs/plugin-vue": "^5.0.4",
16+
"vite": "^5.2.0",
17+
"typescript": "^5.2.2",
18+
"vue-tsc": "^2.0.19"
19+
}
20+
}

demo-SFC-vite/public/vite.svg

Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<template>
2+
<div id="test">Hello, Web Component!</div>
3+
<other-component/>
4+
</template>
5+
6+
<script lang="ts">
7+
import OtherComponent from './OtherComponent.vue';
8+
export default {
9+
components: { OtherComponent },
10+
name: 'MyComponent',
11+
}
12+
</script>
13+
14+
<style scoped>
15+
#test {
16+
color: blue;
17+
}
18+
</style>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<template>
2+
<div>Hello, Vue Nested Component!</div>
3+
</template>
4+
5+
<script lang="ts">
6+
export default {
7+
name: 'MyComponent',
8+
}
9+
</script>
10+
11+
<style >
12+
div {
13+
color: red;
14+
}
15+
</style>
16+

demo-SFC-vite/src/assets/vue.svg

Lines changed: 1 addition & 0 deletions
Loading

demo-SFC-vite/src/main.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { defineCustomElementSFC } from '../../package/index.js'
2+
// import { defineCustomElement } from 'vue'
3+
import MyComponent from './MyComponent.ce.vue'
4+
5+
const MyComponentElement = defineCustomElementSFC(MyComponent, {shadowRoot: false})
6+
customElements.define('my-component', MyComponentElement)

demo-SFC-vite/vite.config.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { defineConfig } from 'vite'
2+
import vue from '@vitejs/plugin-vue'
3+
4+
export default defineConfig({
5+
plugins: [vue({ customElement: true })],
6+
build: {
7+
lib: {
8+
entry: 'src/main.ts',
9+
name: 'MyComponent',
10+
fileName: (format) => `my-component.${format}.js`,
11+
formats: ['es', 'umd'],
12+
},
13+
rollupOptions: {
14+
external: /^vue/,
15+
output: {
16+
globals: {
17+
vue: 'Vue'
18+
}
19+
}
20+
}
21+
}
22+
})

demo-app-vite/src/routes/test1-page.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default {
1919
}
2020
</script>
2121

22-
<style lang="scss">
22+
<style scoped lang="scss">
2323
.test-apply {
2424
@apply text-4xl font-bold text-center text-blue-500;
2525
}

0 commit comments

Comments
 (0)