forked from yikoyu/vuetify-pro-tiptap
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvite.config.ts
More file actions
93 lines (86 loc) · 2.57 KB
/
Copy pathvite.config.ts
File metadata and controls
93 lines (86 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import type { PluginOption } from 'vite'
import fs from 'node:fs'
import { resolve } from 'node:path'
import vue from '@vitejs/plugin-vue'
import { PluginPure } from 'rollup-plugin-pure'
import sass from 'sass'
import { Vuetify3Resolver } from 'unplugin-vue-components/resolvers'
import Components from 'unplugin-vue-components/vite'
import { defineConfig } from 'vite'
import dts from 'vite-plugin-dts'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
Components({
dirs: undefined,
dts: 'types/components.d.ts',
resolvers: [Vuetify3Resolver()],
}),
PluginPure({
functions: ['Mark.create', 'Extension.create', 'Node.create'],
}) as PluginOption,
dts({
insertTypesEntry: true,
}),
// 使用sass原生API编译SCSS
{
name: 'custom-style-compiler',
enforce: 'post',
apply: 'build',
generateBundle() {
// 创建输出目录
const stylesDir = resolve(__dirname, 'lib/styles')
fs.mkdirSync(stylesDir, { recursive: true })
// 获取并编译src/styles下的所有SCSS文件
const srcStylesDir = resolve(__dirname, 'src/styles')
const scssFiles = fs.readdirSync(srcStylesDir)
.filter(file => file.endsWith('.scss'))
for (const file of scssFiles) {
const sourcePath = resolve(srcStylesDir, file)
const targetFileName = file.replace('.scss', '.css')
// 读取SCSS内容
const scssContent = fs.readFileSync(sourcePath, 'utf-8')
// 使用sass.compileString编译SCSS
const result = sass.compileString(scssContent, {
loadPaths: [srcStylesDir], // 配置加载路径以处理@import
style: 'compressed', // 输出样式:expanded或compressed
sourceMap: false,
})
// 写入编译后的CSS
this.emitFile({
type: 'asset',
fileName: `styles/${targetFileName}`,
source: result.css.toString(),
})
}
},
} as PluginOption,
],
optimizeDeps: {
include: ['vue', 'vuetify'],
},
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
},
},
build: {
outDir: 'lib',
lib: {
entry: resolve(__dirname, 'src/index.ts'),
name: 'VuetifyProTiptap',
},
rollupOptions: {
output: {
exports: 'named',
globals: {
'vue': 'Vue',
'vuetify': 'Vuetify',
'vuetify/components': 'VuetifyComp',
},
},
external: ['vue', 'vuetify', 'vuetify/components'],
},
},
})