-
Notifications
You must be signed in to change notification settings - Fork 1
/
vite.config.ts
68 lines (64 loc) · 1.7 KB
/
vite.config.ts
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
import { fileURLToPath, resolve, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import dts from 'vite-plugin-dts'
import vueDevTools from 'vite-plugin-vue-devtools'
// https://vitejs.dev/config/
const demoConfig = defineConfig({
plugins: [vue(), vueDevTools()],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
},
build: {
outDir: 'dist-app'
}
})
// https://vitejs.dev/config/
const libConfig = defineConfig({
plugins: [
vue(),
dts({
tsconfigPath: './tsconfig.app.json',
// remove folder that are not needed in lib mode
exclude: ['src/views/**', 'src/assets/**', 'src/router/**', 'src/stores/**', 'src/main.ts']
})
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
},
build: {
lib: {
// Could also be a dictionary or array of multiple entry points
entry: resolve(__dirname, '/src/lib.ts'),
name: 'FormBuilder',
// the proper extensions will be added
fileName: 'form-builder'
},
rollupOptions: {
// make sure to externalize deps that shouldn't be bundled
// into your library
external: ['vue', 'pinia', 'vue-router'],
output: {
// Provide global variables to use in the UMD build
// for externalized deps
globals: {
vue: 'Vue'
}
}
},
copyPublicDir: false
}
})
export default defineConfig(({ command }) => {
const buildMode: 'lib' | 'demo' = (process.env.MODE as 'lib' | 'demo') || 'demo'
if (command === 'build') {
if (buildMode === 'lib') return libConfig
else return demoConfig
} else {
return demoConfig
}
})