-
-
Notifications
You must be signed in to change notification settings - Fork 540
Expand file tree
/
Copy pathtsdown.config.ts
More file actions
77 lines (70 loc) · 1.88 KB
/
tsdown.config.ts
File metadata and controls
77 lines (70 loc) · 1.88 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
import { defineConfig } from 'tsdown'
const shared = {
outDir: 'dist',
target: 'es2022' as const,
platform: 'browser' as const,
format: 'esm' as const,
sourcemap: true,
outExtensions: () => ({ js: '.mjs', dts: '.d.ts' }),
}
const iife = (globalName: string, minify = false) =>
({
...shared,
format: 'iife' as const,
dts: false,
clean: false,
globalName,
minify,
outExtensions: undefined,
outputOptions: {
entryFileNames: minify ? '[name].min.js' : '[name].js',
},
}) as const
export default defineConfig([
// Core + Snap ESM
{
...shared,
entry: {
lenis: 'packages/core/index.ts',
'lenis-snap': 'packages/snap/index.ts',
},
dts: true,
clean: true,
copy: [{ from: 'packages/core/lenis.css', to: 'dist', flatten: true }],
deps: { neverBundle: ['lenis'] },
},
// React ESM
{
...shared,
entry: { 'lenis-react': 'packages/react/index.ts' },
dts: { resolver: 'tsc' },
clean: false,
banner: '"use client";',
deps: { neverBundle: ['react', 'lenis'] },
},
// Vue ESM
{
...shared,
entry: { 'lenis-vue': 'packages/vue/index.ts' },
dts: { resolver: 'tsc' },
clean: false,
deps: { neverBundle: ['vue', 'lenis'] },
},
// Nuxt ESM
{
...shared,
entry: {
'lenis-vue-nuxt': 'packages/vue/nuxt/module.ts',
'nuxt/runtime/lenis': 'packages/vue/nuxt/runtime/lenis.ts',
},
dts: false,
sourcemap: false,
clean: false,
deps: { neverBundle: ['lenis', 'lenis/vue', '#imports', '#app', '@nuxt/kit'] },
},
// Browser IIFE builds
{ entry: { lenis: 'packages/core/browser.ts' }, ...iife('Lenis') },
{ entry: { lenis: 'packages/core/browser.ts' }, ...iife('Lenis', true) },
{ entry: { 'lenis-snap': 'packages/snap/browser.ts' }, ...iife('Snap') },
{ entry: { 'lenis-snap': 'packages/snap/browser.ts' }, ...iife('Snap', true) },
])