create-packer 1.45.20 → 1.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/package.json +1 -1
  2. package/template/electron-react/.editorconfig +14 -0
  3. package/template/electron-react/.env +3 -0
  4. package/template/electron-react/.env.development +3 -0
  5. package/template/electron-react/.gitignore +28 -0
  6. package/template/electron-react/.husky/commit-msg +4 -0
  7. package/template/electron-react/.husky/pre-commit +4 -0
  8. package/template/electron-react/.prettierignore +6 -0
  9. package/template/electron-react/.prettierrc +18 -0
  10. package/template/electron-react/.stylelintignore +4 -0
  11. package/template/electron-react/.stylelintrc +35 -0
  12. package/template/electron-react/.vscode/extensions.json +7 -0
  13. package/template/electron-react/README.md +14 -0
  14. package/template/electron-react/assets/rspack.png +0 -0
  15. package/template/electron-react/build.config.json +40 -0
  16. package/template/electron-react/commitlint.config.cjs +1 -0
  17. package/template/electron-react/configs/config.ts +25 -0
  18. package/template/electron-react/configs/createChunks.ts +26 -0
  19. package/template/electron-react/configs/rsbuild.main.config.ts +54 -0
  20. package/template/electron-react/configs/rsbuild.preload.config.ts +54 -0
  21. package/template/electron-react/configs/rsbuild.renderer.config.ts +73 -0
  22. package/template/electron-react/env.d.ts +12 -0
  23. package/template/electron-react/eslint.config.mjs +108 -0
  24. package/template/electron-react/main/main.ts +83 -0
  25. package/template/electron-react/main/tools/html.ts +8 -0
  26. package/template/electron-react/main/tools/index.ts +1 -0
  27. package/template/electron-react/package.json +97 -0
  28. package/template/electron-react/pnpm-lock.yaml +10158 -0
  29. package/template/electron-react/postcss.config.cjs +8 -0
  30. package/template/electron-react/preload/index.ts +1 -0
  31. package/template/electron-react/renderer/domain/app/app.model.ts +7 -0
  32. package/template/electron-react/renderer/domain/app/components/app-context.tsx +31 -0
  33. package/template/electron-react/renderer/domain/app/components/app.tsx +25 -0
  34. package/template/electron-react/renderer/domain/app/components/index.ts +1 -0
  35. package/template/electron-react/renderer/domain/app/index.ts +3 -0
  36. package/template/electron-react/renderer/domain/app/startApp.tsx +6 -0
  37. package/template/electron-react/renderer/domain/router/components/index.ts +2 -0
  38. package/template/electron-react/renderer/domain/router/components/route-layout.tsx +19 -0
  39. package/template/electron-react/renderer/domain/router/components/sub-route-outlet.tsx +22 -0
  40. package/template/electron-react/renderer/domain/router/home/ids.ts +3 -0
  41. package/template/electron-react/renderer/domain/router/home/index.ts +2 -0
  42. package/template/electron-react/renderer/domain/router/home/routes.tsx +13 -0
  43. package/template/electron-react/renderer/domain/router/ids.ts +6 -0
  44. package/template/electron-react/renderer/domain/router/index.ts +4 -0
  45. package/template/electron-react/renderer/domain/router/router.tsx +28 -0
  46. package/template/electron-react/renderer/domain/router/router.types.ts +3 -0
  47. package/template/electron-react/renderer/global.d.ts +16 -0
  48. package/template/electron-react/renderer/index.html +11 -0
  49. package/template/electron-react/renderer/main.ts +3 -0
  50. package/template/electron-react/renderer/pages/home/index.ts +1 -0
  51. package/template/electron-react/renderer/pages/home/view.styled.ts +5 -0
  52. package/template/electron-react/renderer/pages/home/view.tsx +10 -0
  53. package/template/electron-react/renderer/pages/index.tsx +18 -0
  54. package/template/electron-react/renderer/pages/not-found.tsx +3 -0
  55. package/template/electron-react/renderer/public/rsbuild-logo.svg +1 -0
  56. package/template/electron-react/renderer/scripts/createChunks.ts +26 -0
  57. package/template/electron-react/renderer/scripts/index.ts +1 -0
  58. package/template/electron-react/renderer/shared/assets/react.svg +1 -0
  59. package/template/electron-react/renderer/shared/components/componentInstance.tsx +80 -0
  60. package/template/electron-react/renderer/shared/components/index.ts +1 -0
  61. package/template/electron-react/renderer/shared/constant/index.ts +0 -0
  62. package/template/electron-react/renderer/shared/hooks/defineRouter/defineRouter.types.ts +33 -0
  63. package/template/electron-react/renderer/shared/hooks/defineRouter/deineRouter.tsx +161 -0
  64. package/template/electron-react/renderer/shared/hooks/defineRouter/index.ts +2 -0
  65. package/template/electron-react/renderer/shared/hooks/index.ts +6 -0
  66. package/template/electron-react/renderer/shared/hooks/useInterval.ts +26 -0
  67. package/template/electron-react/renderer/shared/hooks/useLoadingAction.ts +27 -0
  68. package/template/electron-react/renderer/shared/hooks/useLowPriorityState.ts +26 -0
  69. package/template/electron-react/renderer/shared/hooks/useSyncState.ts +15 -0
  70. package/template/electron-react/renderer/shared/hooks/useVisible.ts +27 -0
  71. package/template/electron-react/renderer/shared/service/api.ts +1 -0
  72. package/template/electron-react/renderer/shared/service/home.ts +9 -0
  73. package/template/electron-react/renderer/shared/service/index.ts +3 -0
  74. package/template/electron-react/renderer/shared/service/request.ts +5 -0
  75. package/template/electron-react/renderer/shared/styles/global.ts +7 -0
  76. package/template/electron-react/renderer/shared/styles/index.ts +2 -0
  77. package/template/electron-react/renderer/shared/styles/theme.ts +60 -0
  78. package/template/electron-react/renderer/shared/tools/index.ts +0 -0
  79. package/template/electron-react/tsconfig.json +33 -0
  80. package/template/electron-react/tsconfig.node.json +10 -0
  81. package/template/electron-vue/package.json +2 -2
  82. package/template/electron-vue/preload/index.ts +1 -1
  83. package/template/electron-vue/preload/tools.ts +26 -0
  84. package/template/web-app/react-rsbuild/rsbuild.config.ts +1 -1
  85. package/template/electron-vue/configs/clean.ts +0 -10
  86. /package/template/{electron-vue/preload/toolr.ts → electron-react/preload/tools.ts} +0 -0
@@ -0,0 +1,161 @@
1
+ import { DependencyList, useEffect, useMemo } from 'react'
2
+ import { useMatches, useSearchParams, NavigateOptions, createBrowserRouter } from 'react-router'
3
+ import { omit, cloneDeep, last } from 'es-toolkit'
4
+ import { assign, isArray, reduce, get, map, split, forEach } from 'es-toolkit/compat'
5
+ import { stringify, parse } from 'qs'
6
+ import { defineStore } from 'define-zustand'
7
+ import { routeByIdType, routeType, editableRouteType } from './defineRouter.types'
8
+
9
+ export default function defineRouter(router: ReturnType<typeof createBrowserRouter>) {
10
+ const useRouter = defineStore({
11
+ state: () => ({
12
+ routes: cloneDeep(router.routes) as routeType[]
13
+ }),
14
+ getters: {
15
+ routesById: state => {
16
+ return (function flat(routes: routeType[], parentRoute?: routeByIdType) {
17
+ return reduce(
18
+ routes,
19
+ (result, { children, ...route }, i) => {
20
+ const $route: routeByIdType = {
21
+ ...route,
22
+ pos: parentRoute?.pos ? `${parentRoute?.pos}-${i}` : `${i}`
23
+ }
24
+ if (parentRoute) {
25
+ $route.path = `${
26
+ parentRoute.path === '/' ? '' : parentRoute.path
27
+ }/${$route.path}`
28
+ }
29
+ result[$route.id] = $route
30
+ if (isArray(children)) {
31
+ assign(result, flat(children, $route))
32
+ }
33
+ return result
34
+ },
35
+ {} as Record<string, routeByIdType>
36
+ )
37
+ })(state.routes)
38
+ }
39
+ },
40
+ actions: (setState, getState) => {
41
+ function posToLodashPath(pos: string) {
42
+ if (pos) {
43
+ return `[${split(pos, '-').join('].children[')}]`
44
+ }
45
+ return ''
46
+ }
47
+
48
+ function updateRoute(id: routeType['id'], updator: (route: editableRouteType) => void) {
49
+ const { routesById, routes } = getState()
50
+ const newRoutes = cloneDeep(routes)
51
+ const path = posToLodashPath(routesById[id].pos)
52
+ const route: routeType = get(newRoutes, path)
53
+ const newRoute = cloneDeep(omit(route, ['element', 'errorElement', 'children']))
54
+ updator(newRoute)
55
+ assign(route, newRoute)
56
+ setState({ routes: newRoutes })
57
+ }
58
+ function getRoute(id: routeType['id'], path?: string | string[]) {
59
+ const { routesById } = getState()
60
+ const route = routesById[id]
61
+ if (path) {
62
+ return get(route, path)
63
+ }
64
+ return route
65
+ }
66
+
67
+ function genRouteUrl(id: routeType['id'], query?: Record<string, any>) {
68
+ const path = getRoute(id, 'path')
69
+ if (path) {
70
+ const { origin } = window.location
71
+ let url = origin + router.basename + path
72
+ url += query ? `?${stringify(query)}` : ''
73
+ return url
74
+ }
75
+ return void 0
76
+ }
77
+
78
+ function openRoute(id: routeType['id'], query?: Record<string, any>) {
79
+ const url = genRouteUrl(id, query)
80
+ if (url) {
81
+ window.open(url)
82
+ }
83
+ }
84
+
85
+ function reloadRoute(id: routeType['id'], query?: Record<string, any>) {
86
+ const url = genRouteUrl(id, query)
87
+ if (url) {
88
+ window.location.replace(url)
89
+ }
90
+ }
91
+
92
+ function navigate(
93
+ to: { id: routeType['id']; query?: Record<string, any> },
94
+ opts?: NavigateOptions
95
+ ) {
96
+ return router.navigate(
97
+ {
98
+ pathname: getRoute(to.id, 'path'),
99
+ search: to.query ? stringify(to.query) : ''
100
+ },
101
+ opts
102
+ )
103
+ }
104
+
105
+ return {
106
+ navigate,
107
+ getRoute,
108
+ genRouteUrl,
109
+ openRoute,
110
+ reloadRoute,
111
+ updateRoute
112
+ }
113
+ }
114
+ })
115
+ function useQuery<Q>() {
116
+ const [params] = useSearchParams()
117
+ const query = parse(params.toString())
118
+
119
+ return query as Q
120
+ }
121
+
122
+ function useMatchRoutes(): routeType[] {
123
+ const matches = useMatches()
124
+ const getRoute = useRouter(state => state.getRoute)
125
+ return useMemo(() => map(matches, o => getRoute(o.id)), [matches])
126
+ }
127
+
128
+ /**
129
+ * @description 验证器返回false则无权限
130
+ */
131
+ function useRoutePermission(
132
+ config: {
133
+ redirectRouteId: string
134
+ validator: (currentRoute?: routeType) => boolean
135
+ },
136
+ deps: DependencyList
137
+ ) {
138
+ const matchRoutes = useMatchRoutes()
139
+ const currentRoute = last(matchRoutes)
140
+ const updateRoute = useRouter(state => state.updateRoute)
141
+ const navigate = useRouter(state => state.navigate)
142
+ const routesById = useRouter(state => state.routesById)
143
+
144
+ useEffect(() => {
145
+ forEach(routesById, route => {
146
+ updateRoute(route.id, route => {
147
+ route.unauthorized = !config.validator(route)
148
+ })
149
+ })
150
+ }, deps)
151
+
152
+ useEffect(() => {
153
+ const result = config.validator(currentRoute)
154
+ if (!result && config.redirectRouteId) {
155
+ navigate({ id: config.redirectRouteId }, { replace: true })
156
+ }
157
+ }, [currentRoute?.id, ...deps])
158
+ }
159
+
160
+ return { useRouter, useQuery, useMatchRoutes, useRoutePermission }
161
+ }
@@ -0,0 +1,2 @@
1
+ export { default as defineRouter } from './deineRouter'
2
+ export * from './defineRouter.types'
@@ -0,0 +1,6 @@
1
+ export { default as useLoadingAction } from './useLoadingAction'
2
+ export { default as useInterval } from './useInterval'
3
+ export { default as useVisible } from './useVisible'
4
+ export { default as useLowPriorityState } from './useLowPriorityState'
5
+ export * from './useSyncState'
6
+ export * from './defineRouter'
@@ -0,0 +1,26 @@
1
+ import { useState } from 'react'
2
+ import { useInterval as useRUInterval } from 'react-use'
3
+
4
+ interface actionsType {
5
+ start: () => void
6
+ stop: () => void
7
+ }
8
+ export default function useInterval(
9
+ cb: (actions: actionsType) => Promise<void> | void,
10
+ delay: number
11
+ ): actionsType {
12
+ const [startInterval, setStartInterval] = useState(false)
13
+ const start: actionsType['start'] = () => {
14
+ setStartInterval(true)
15
+ }
16
+ const stop: actionsType['stop'] = () => {
17
+ setStartInterval(false)
18
+ }
19
+ useRUInterval(
20
+ async () => {
21
+ cb({ start, stop })
22
+ },
23
+ startInterval ? delay : null
24
+ )
25
+ return { start, stop }
26
+ }
@@ -0,0 +1,27 @@
1
+ import { useCallback, useState, DependencyList, useRef } from 'react'
2
+
3
+ export default function useLoadingAction<C extends (...arg: any) => Promise<any> | any>(
4
+ callback: C,
5
+ deps: DependencyList,
6
+ debounce = true
7
+ ) {
8
+ const [loading, setLoading] = useState(false)
9
+ const loadingSync = useRef(loading)
10
+ function $setLoading(loading: boolean) {
11
+ setLoading(loading)
12
+ loadingSync.current = loading
13
+ }
14
+ const action = useCallback(async (...arg: any) => {
15
+ if (debounce && loadingSync.current) {
16
+ return
17
+ }
18
+ try {
19
+ $setLoading(true)
20
+ return await callback(...arg)
21
+ } finally {
22
+ $setLoading(false)
23
+ }
24
+ }, deps) as C
25
+
26
+ return [loading, action] as const
27
+ }
@@ -0,0 +1,26 @@
1
+ import { useEffect, useState, useTransition, DependencyList } from 'react'
2
+
3
+ /**
4
+ *
5
+ * @param callback
6
+ * @param watches If set, it is autorun callback
7
+ * @returns
8
+ */
9
+ export default function useLowPriorityState<V>(callback: () => V, watches?: DependencyList) {
10
+ const [value, setValue] = useState<V>(callback)
11
+ const [loading, startTransition] = useTransition()
12
+
13
+ function startLoad() {
14
+ startTransition(() => {
15
+ setValue(callback())
16
+ })
17
+ }
18
+
19
+ useEffect(() => {
20
+ if (watches) {
21
+ startLoad()
22
+ }
23
+ }, watches)
24
+
25
+ return [value, { loading, startLoad }] as const
26
+ }
@@ -0,0 +1,15 @@
1
+ import { useRef, useState, Dispatch, SetStateAction } from 'react'
2
+ import { isFunction } from 'es-toolkit'
3
+
4
+ export function useSyncState<S>(initialState: S | (() => S)) {
5
+ const [state, setState] = useState(initialState)
6
+ const syncState = useRef<S>(state)
7
+
8
+ const $setState: Dispatch<SetStateAction<S>> = newState => {
9
+ const $newState = (isFunction(newState) ? newState(state) : newState) as S
10
+ setState($newState)
11
+ syncState.current = $newState
12
+ }
13
+
14
+ return [syncState, state, $setState] as const
15
+ }
@@ -0,0 +1,27 @@
1
+ import { useState } from 'react'
2
+ import { isFunction } from 'es-toolkit'
3
+
4
+ export interface useVisibleConfigType {
5
+ defaultVisible?: boolean
6
+ onBeforeShow?: () => Promise<boolean | void>
7
+ onBeforeHide?: () => Promise<boolean | void>
8
+ }
9
+ export default function useVisible(config?: useVisibleConfigType) {
10
+ const [visible, setVisible] = useState(config?.defaultVisible ?? false)
11
+ const onShow = async () => {
12
+ let isShow: boolean | void = true
13
+ if (isFunction(config?.onBeforeShow)) {
14
+ isShow = await config?.onBeforeShow?.()
15
+ }
16
+ setVisible(isShow !== false)
17
+ }
18
+ const onClose = async () => {
19
+ let isHide: boolean | void = true
20
+ if (isFunction(config?.onBeforeHide)) {
21
+ isHide = await config?.onBeforeHide?.()
22
+ }
23
+ setVisible(isHide === false)
24
+ }
25
+
26
+ return { visible, onShow, onClose }
27
+ }
@@ -0,0 +1 @@
1
+ export const HOME_DATA = '/homeData'
@@ -0,0 +1,9 @@
1
+ import { useQuery, QueryOptions } from '@tanstack/react-query'
2
+ import { HOME_DATA } from './api'
3
+
4
+ export const useHomeData = (options?: QueryOptions) => {
5
+ return useQuery({
6
+ ...options,
7
+ queryKey: [HOME_DATA, ...(options?.queryKey || [])]
8
+ })
9
+ }
@@ -0,0 +1,3 @@
1
+ export * from './request'
2
+ export * as API from './api'
3
+ export * from './home'
@@ -0,0 +1,5 @@
1
+ import axios from 'axios'
2
+
3
+ export const request = axios.create({
4
+ baseURL: import.meta.env.PUBLIC_BASE_URL + import.meta.env.PUBLIC_API_HOST
5
+ })
@@ -0,0 +1,7 @@
1
+ import { css } from '@emotion/react'
2
+
3
+ export const globalCss = css`
4
+ body {
5
+ margin: 0;
6
+ }
7
+ `
@@ -0,0 +1,2 @@
1
+ export * from './global'
2
+ export * from './theme'
@@ -0,0 +1,60 @@
1
+ import { CSSProperties } from 'react'
2
+ import { isString } from 'es-toolkit'
3
+ import { isNumber } from 'es-toolkit/compat'
4
+
5
+ export const theme = {
6
+ text: {
7
+ xs: { fontSize: '12px', lineHeight: '20px' },
8
+ sm: { fontSize: '14px', lineHeight: '22px' },
9
+ base: { fontSize: '16px', lineHeight: '24px' },
10
+ lg: { fontSize: '18px', lineHeight: '26px' },
11
+ xl: { fontSize: '20px', lineHeight: '28px' },
12
+ '2xl': { fontSize: '24px', lineHeight: '32px' },
13
+ '3xl': { fontSize: '28px', lineHeight: '40px' },
14
+ '4xl': { fontSize: '32px', lineHeight: '44px' }
15
+ } satisfies Record<string, CSSProperties>,
16
+ tools: {
17
+ ellipsis: () => ({
18
+ overflow: 'hidden',
19
+ textOverflow: 'ellipsis',
20
+ whiteSpace: 'nowrap'
21
+ }),
22
+ lineClamp: (n: number) => ({
23
+ '-webkit-line-clamp': `${n}`,
24
+ '-webkit-box-orient': 'vertical',
25
+ overflow: 'hidden',
26
+ display: '-webkit-box'
27
+ }),
28
+ size: (s: string) => ({ width: s, height: s }),
29
+ py: (s: string) => ({ paddingTop: s, paddingBottom: s }),
30
+ px: (s: string) => ({ paddingLeft: s, paddingRight: s }),
31
+ my: (s: string) => ({ marginTop: s, marginBottom: s }),
32
+ mx: (s: string) => ({ marginLeft: s, marginRight: s }),
33
+ flex: (
34
+ align: CSSProperties['alignItems'],
35
+ justify: CSSProperties['justifyContent'],
36
+ vertical?: boolean
37
+ ) => {
38
+ return {
39
+ display: 'flex',
40
+ alignItems: align,
41
+ justifyContent: justify,
42
+ flexDirection: vertical ? 'column' : 'row'
43
+ } satisfies CSSProperties
44
+ },
45
+ /** 数字为元素数量,字符串为对应css的值 */
46
+ grid: (
47
+ rows: number | CSSProperties['gridTemplateRows'],
48
+ cols: number | CSSProperties['gridTemplateColumns'],
49
+ gap?: number | string
50
+ ) => {
51
+ return {
52
+ display: 'grid',
53
+ gridTemplateRows: isString(rows) ? rows : `repeat(${rows}, minmax(0, 1fr))`,
54
+ gridTemplateColumns: isString(cols) ? cols : `repeat(${cols}, minmax(0, 1fr))`,
55
+ gap: isNumber(gap) ? `${gap}px` : gap
56
+ } satisfies CSSProperties
57
+ }
58
+ }
59
+ }
60
+ export type themeType = typeof theme
@@ -0,0 +1,33 @@
1
+ {
2
+ "compilerOptions": {
3
+ "baseUrl": ".",
4
+ "target": "ESNext",
5
+ "useDefineForClassFields": true,
6
+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
7
+ "allowJs": false,
8
+ "skipLibCheck": true,
9
+ "esModuleInterop": false,
10
+ "allowSyntheticDefaultImports": true,
11
+ "strict": true,
12
+ "forceConsistentCasingInFileNames": true,
13
+ "strictPropertyInitialization": false,
14
+ "strictNullChecks": true,
15
+ "module": "ESNext",
16
+ "moduleResolution": "bundler",
17
+ "resolveJsonModule": true,
18
+ "isolatedModules": true,
19
+ "noEmit": true,
20
+ "jsx": "react-jsx",
21
+ "jsxImportSource": "@emotion/react",
22
+ "paths": {
23
+ "@/*": ["./*"]
24
+ }
25
+ },
26
+ "include": ["**/*.ts", "**/*.tsx"],
27
+ "exclude": ["scripts", "rsbuild.config.ts"],
28
+ "references": [
29
+ {
30
+ "path": "./tsconfig.node.json"
31
+ }
32
+ ]
33
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "compilerOptions": {
3
+ "composite": true,
4
+ "module": "ESNext",
5
+ "moduleResolution": "node",
6
+ "allowSyntheticDefaultImports": true,
7
+ "resolveJsonModule": true
8
+ },
9
+ "include": ["scripts", "rsbuild.config.ts", "package.json"]
10
+ }
@@ -30,7 +30,7 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "axios": "1.7.9",
33
- "electron-debug": "^4.1.0",
33
+ "electron-debug": "4.1.0",
34
34
  "es-toolkit": "1.39.8",
35
35
  "pinia": "3.0.3",
36
36
  "tailwindcss": "4.1.4",
@@ -57,7 +57,7 @@
57
57
  "cross-env": "7.0.3",
58
58
  "cssnano": "6.0.0",
59
59
  "electron": "38.1.2",
60
- "electron-builder": "^26.0.12",
60
+ "electron-builder": "26.0.12",
61
61
  "eslint": "9.17.0",
62
62
  "eslint-import-resolver-typescript": "3.7.0",
63
63
  "eslint-plugin-import": "2.31.0",
@@ -1 +1 @@
1
- export * from './toolr'
1
+ export * from './tools'
@@ -0,0 +1,26 @@
1
+ import { contextBridge, ipcRenderer, IpcRendererEvent } from 'electron'
2
+
3
+ export type Channels = 'ipc-example'
4
+
5
+ const electronHandler = {
6
+ ipcRenderer: {
7
+ sendMessage(channel: Channels, ...args: unknown[]) {
8
+ ipcRenderer.send(channel, ...args)
9
+ },
10
+ on(channel: Channels, func: (...args: unknown[]) => void) {
11
+ const subscription = (_event: IpcRendererEvent, ...args: unknown[]) => func(...args)
12
+ ipcRenderer.on(channel, subscription)
13
+
14
+ return () => {
15
+ ipcRenderer.removeListener(channel, subscription)
16
+ }
17
+ },
18
+ once(channel: Channels, func: (...args: unknown[]) => void) {
19
+ ipcRenderer.once(channel, (_event, ...args) => func(...args))
20
+ }
21
+ }
22
+ }
23
+
24
+ contextBridge.exposeInMainWorld('electron', electronHandler)
25
+
26
+ export type ElectronHandler = typeof electronHandler
@@ -1,10 +1,10 @@
1
1
  import { defineConfig, loadEnv } from '@rsbuild/core'
2
2
  import { pluginReact } from '@rsbuild/plugin-react'
3
+ import { pluginSvgr } from '@rsbuild/plugin-svgr'
3
4
  import { pluginEslint } from '@rsbuild/plugin-eslint'
4
5
  import StylelintWebpackPlugin from 'stylelint-webpack-plugin'
5
6
  import { pluginTypeCheck } from '@rsbuild/plugin-type-check'
6
7
  import { RsdoctorRspackPlugin } from '@rsdoctor/rspack-plugin'
7
- import { pluginSvgr } from '@rsbuild/plugin-svgr'
8
8
  import { createChunks } from './scripts'
9
9
 
10
10
  export default defineConfig(({ envMode, command }) => {
@@ -1,10 +0,0 @@
1
- import fs from 'fs'
2
- import path from 'path'
3
- import { rimrafSync } from 'rimraf'
4
- import { OUTPUT_ROOT } from './config'
5
-
6
- const foldersToRemove = [path.join(process.cwd(), OUTPUT_ROOT)]
7
-
8
- foldersToRemove.forEach(folder => {
9
- if (fs.existsSync(folder)) rimrafSync(folder)
10
- })