Skip to content

Commit 2d1f353

Browse files
committed
perf(component treeshaking): updated config and build files to treeshake single components
Each component now is treeshshaken individually into the final build BREAKING CHANGE: How import components themesberg#1197
1 parent 8544952 commit 2d1f353

File tree

7 files changed

+15
-50
lines changed

7 files changed

+15
-50
lines changed

Diff for: .gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ tsconfig.tsbuildinfo
1313
yarn-debug.log*
1414
yarn-error.log*
1515
dist
16-
.contentlayer
16+
.contentlayer
17+
.yalc

Diff for: .vscode/settings.json

-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
".vercel/": true,
1414
"build/": true,
1515
"coverage/": true,
16-
"lib/": true,
1716
"node_modules": true,
1817
"storybook-static/": true,
1918
"tsconfig.tsbuildinfo": true,

Diff for: package.json

+9-1
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,16 @@
1515
"bugs": "https://github.com/themesberg/flowbite-react/issues",
1616
"license": "MIT",
1717
"files": [
18-
"./lib/"
18+
"lib"
1919
],
20+
"exports": {
21+
"./*": {
22+
"import": "./lib/esm/components/*/index.js",
23+
"require": "./lib/cjs/components/*/index.js",
24+
"default": "./lib/esm/components/*/index.js",
25+
"types": "./lib/esm/components/*/index.d.ts"
26+
}
27+
},
2028
"main": "./lib/cjs/index.js",
2129
"module": "./lib/esm/index.js",
2230
"types": "./lib/esm/index.d.ts",

Diff for: src/components/List/List.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { ComponentProps, FC, PropsWithChildren } from 'react';
22
import { twMerge } from 'tailwind-merge';
3-
import type { FlowbiteStateColors } from '../..';
3+
import type { FlowbiteStateColors } from '../Flowbite';
44
import { mergeDeep } from '../../helpers/merge-deep';
55
import { getTheme } from '../../theme-store';
66
import type { DeepPartial } from '../../types';

Diff for: src/index.ts

+1-44
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,5 @@
1-
export * from './components/Accordion';
2-
export * from './components/Alert';
3-
export * from './components/Avatar';
4-
export * from './components/Badge';
5-
export * from './components/Banner';
6-
export * from './components/Blockquote';
7-
export * from './components/Breadcrumb';
8-
export * from './components/Button';
9-
export * from './components/Card';
10-
export * from './components/Carousel';
11-
export * from './components/Checkbox';
12-
export * from './components/DarkThemeToggle';
13-
export * from './components/Datepicker';
14-
export * from './components/Dropdown';
15-
export * from './components/FileInput';
16-
export * from './components/FloatingLabel';
17-
export * from './components/Flowbite';
18-
export type { CustomFlowbiteTheme } from './components/Flowbite/FlowbiteTheme';
19-
export * from './components/Footer';
20-
export * from './components/HelperText';
21-
export * from './components/Kbd';
22-
export * from './components/Label';
23-
export * from './components/List';
24-
export * from './components/ListGroup';
25-
export * from './components/Modal';
26-
export * from './components/Navbar';
27-
export * from './components/Pagination';
28-
export * from './components/Progress';
29-
export * from './components/Radio';
30-
export * from './components/RangeSlider';
31-
export * from './components/Rating';
32-
export * from './components/Select';
33-
export * from './components/Sidebar';
34-
export * from './components/Spinner';
35-
export * from './components/Table';
36-
export * from './components/Tabs';
37-
export * from './components/TextInput';
38-
export * from './components/Textarea';
39-
export * from './components/ThemeModeScript';
40-
export * from './components/Timeline';
41-
export * from './components/Toast';
42-
export * from './components/ToggleSwitch';
43-
export * from './components/Tooltip';
44-
451
export * from './hooks/use-theme-mode';
462

473
export * from './theme';
484
export { getTheme, getThemeMode } from './theme-store';
5+
export type { CustomFlowbiteTheme } from './components/Flowbite/FlowbiteTheme';

Diff for: src/theme.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { FlowbiteTheme } from '.';
1+
import type { FlowbiteTheme } from './components/Flowbite';
22
import { accordionTheme } from './components/Accordion/theme';
33
import { alertTheme } from './components/Alert/theme';
44
import { avatarTheme } from './components/Avatar/theme';

Diff for: tsconfig.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"forceConsistentCasingInFileNames": true,
77
"incremental": true,
88
"isolatedModules": true,
9-
"jsx": "preserve",
9+
"jsx": "react-jsx",
1010
"lib": ["DOM", "DOM.Iterable", "ESNext"],
1111
"module": "ESNext",
1212
"moduleResolution": "node",

0 commit comments

Comments
 (0)