-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvite.config.ts
More file actions
75 lines (72 loc) · 2.62 KB
/
Copy pathvite.config.ts
File metadata and controls
75 lines (72 loc) · 2.62 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
/// <reference types="vitest/config" />
import { defineConfig } from 'vite'
import { resolve } from 'path'
import tailwindcss from '@tailwindcss/vite'
import dts from 'vite-plugin-dts'
import { welyTailwindPlugin } from './src/build/wely-tailwind-plugin'
/** Library build modes: default = runtime-only for npm; bundle/chunks = runtime + demo components (see src/demo-bundle.ts). */
const isBundle = process.env.WELY_BUILD_MODE === 'bundle'
const isChunks = process.env.WELY_BUILD_MODE === 'chunks'
const runDts = !isBundle && !isChunks
export default defineConfig(({ command }) => {
const includeComponentTailwind =
isBundle || isChunks || command !== 'build'
return {
resolve: {
alias: {
/** Must be before `welyjs` so `welyjs/test` does not resolve under the runtime file alias. */
'welyjs/test': resolve(__dirname, 'src/testing/index.ts'),
/** Same public API as the published package — playground imports `welyjs` so it works in consumer projects too. */
welyjs: resolve(__dirname, 'src/runtime/index.ts'),
},
},
plugins: [
welyTailwindPlugin({
root: __dirname,
welyPkgDir: __dirname,
empty: !includeComponentTailwind,
extraSources: includeComponentTailwind ? ['src/runtime/__tests__/**/*.ts'] : undefined,
}),
tailwindcss(),
runDts && dts({ rollupTypes: true, outDir: 'dist', exclude: ['**/__tests__/**', '**/*.test.ts'] }),
].filter(Boolean),
build: {
target: 'es2020',
minify: 'terser',
terserOptions: {
compress: { passes: 2, drop_console: false },
format: { comments: false },
},
sourcemap: false,
rollupOptions: {
output: {
...(isChunks && {
chunkFileNames: 'chunks/[name].js',
manualChunks(id) {
if (id.includes('src/runtime') || id.includes('src/styles')) return 'runtime'
if (id.includes('src/components')) return 'components'
},
}),
},
},
lib:
isBundle || isChunks
? {
entry: resolve(__dirname, 'src/demo-bundle.ts'),
name: 'Wely',
fileName: (format) => (isChunks ? 'wely.chunked.es' : `wely.bundle.${format}`) + '.js',
formats: isChunks ? ['es'] : ['es', 'umd'],
}
: {
entry: resolve(__dirname, 'src/runtime/index.ts'),
name: 'Wely',
fileName: (format) => `wely.${format}.js`,
},
},
test: {
globals: true,
environment: 'jsdom',
include: ['src/**/*.test.ts', 'e2e/**/*.e2e.test.ts'],
},
}
})