-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathvite.config.lib.ts
More file actions
98 lines (83 loc) · 3.34 KB
/
vite.config.lib.ts
File metadata and controls
98 lines (83 loc) · 3.34 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
94
95
96
97
98
import { defineConfig } from 'vite';
import dts from 'vite-plugin-dts';
import { cemPluginDefaultOptions } from '@gracile-labs/jsx/vite';
import autoExternal from 'rollup-plugin-auto-external';
import { generateLitTypes } from '@gracile-labs/jsx/cem/index';
import { literalsHtmlCssMinifier } from '@literals/rollup-plugin-html-css-minifier';
import manifest from '@shoelace-style/shoelace/dist/custom-elements.json' with { type: 'json' };
import * as common from './vite.common.js';
generateLitTypes(manifest, {
...cemPluginDefaultOptions,
fileName: 'jsx-vendor.d.ts',
});
export default defineConfig(({ mode }) => {
console.log("'Mode", mode);
return {
resolve: common.resolve,
build: {
lib: {
entry: [
'./src/lib/index.ts',
'./src/lib/themes/webawesome/index.ts',
'./src/lib/themes/webawesome/demo-nodes/index.ts',
'./src/lib/adapters/react.ts',
// './src/lib/adapters/vue.ts',
],
name: 'NodeFlowElements',
formats: ['es'],
},
target: 'esnext',
sourcemap: true,
minify: false,
rollupOptions: {
output: { preserveModules: true },
// NOTE: Needed because `auto-external` will not catch everything.
external: [
'@shoelace-style/shoelace/dist/components/menu/menu.js',
'@shoelace-style/shoelace/dist/components/menu-item/menu-item.js',
'@shoelace-style/shoelace/dist/components/divider/divider.js',
'@shoelace-style/shoelace/dist/components/animation/animation.js',
'@shoelace-style/shoelace/dist/components/icon-button/icon-button.js',
'@shoelace-style/shoelace/dist/components/tag/tag.js',
'@shoelace-style/shoelace/dist/components/tooltip/tooltip.js',
'@shoelace-style/shoelace/dist/components/dropdown/dropdown.js',
'@shoelace-style/shoelace/dist/components/menu/menu.js',
'@shoelace-style/shoelace/dist/components/image-comparer/image-comparer.js',
'@shoelace-style/shoelace/dist/components/details/details.js',
'@shoelace-style/shoelace/dist/components/menu-label/menu-label.js',
'@shoelace-style/shoelace/dist/components/copy-button/copy-button.js',
'@shoelace-style/shoelace/dist/components/dialog/dialog.js',
'@shoelace-style/shoelace/dist/components/textarea/textarea.js',
'@shoelace-style/shoelace/dist/components/select/select.js',
'@shoelace-style/shoelace/dist/components/option/option.js',
'@shoelace-style/shoelace/dist/components/card/card.js',
'clsx',
'signal-polyfill',
'signal-utils/subtle/reaction',
'@gracile-labs/jsx/components/for',
'lit/directives/ref.js',
'lit/decorators.js',
'lit/directives/unsafe-html.js',
'lit/directives/class-map.js',
'lit/directives/style-map.js',
'@lit-labs/signals',
'@lit-labs/motion',
'@lit/context',
'lit/directives/repeat.js',
// TODO: Use regex
// external: [/^lit\/.*/],
'react',
'vue',
],
plugins: [autoExternal()],
},
},
plugins: [
dts({ entryRoot: './src/lib' }),
common.staticCopy(mode),
common.babelConfig,
common.gracileJsxConfig,
literalsHtmlCssMinifier(),
],
};
});