create-packer 1.46.4 → 1.47.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.
- package/package.json +1 -1
- package/template/cli/package.json +53 -53
- package/template/cli/scripts/pub.js +39 -39
- package/template/cli/src/createTemp.ts +58 -58
- package/template/docusaurus/src/components/HomepageFeatures/index.tsx +70 -70
- package/template/docusaurus/src/components/HomepageFeatures/styles.module.css +11 -11
- package/template/docusaurus/src/css/custom.css +30 -30
- package/template/docusaurus/src/pages/index.module.css +23 -23
- package/template/docusaurus/src/pages/index.tsx +40 -40
- package/template/electron-react/.vscode/extensions.json +7 -7
- package/template/electron-react/configs/createChunks.ts +26 -26
- package/template/electron-react/configs/rsbuild.main.config.ts +54 -54
- package/template/electron-react/configs/rsbuild.preload.config.ts +54 -54
- package/template/electron-react/configs/rsbuild.renderer.config.ts +73 -73
- package/template/electron-react/env.d.ts +12 -12
- package/template/electron-react/eslint.config.mjs +108 -108
- package/template/electron-react/package.json +97 -97
- package/template/electron-react/pnpm-lock.yaml +10158 -10158
- package/template/electron-react/postcss.config.cjs +8 -8
- package/template/electron-react/renderer/domain/components/app-context.tsx +31 -31
- package/template/electron-react/renderer/domain/components/app.tsx +25 -25
- package/template/electron-react/renderer/domain/components/index.ts +1 -1
- package/template/electron-react/renderer/domain/models/app.ts +7 -7
- package/template/electron-react/renderer/domain/router/components/index.ts +2 -2
- package/template/electron-react/renderer/domain/router/components/route-layout.tsx +19 -19
- package/template/electron-react/renderer/domain/router/components/sub-route-outlet.tsx +22 -22
- package/template/electron-react/renderer/domain/router/home/ids.ts +3 -3
- package/template/electron-react/renderer/domain/router/home/index.ts +2 -2
- package/template/electron-react/renderer/domain/router/home/routes.tsx +13 -13
- package/template/electron-react/renderer/domain/router/ids.ts +6 -6
- package/template/electron-react/renderer/domain/router/index.ts +4 -4
- package/template/electron-react/renderer/domain/router/router.tsx +28 -28
- package/template/electron-react/renderer/domain/router/router.types.ts +3 -3
- package/template/electron-react/renderer/main.tsx +4 -4
- package/template/electron-react/renderer/pages/home/index.ts +1 -1
- package/template/electron-react/renderer/pages/index.tsx +18 -18
- package/template/electron-react/renderer/pages/not-found.tsx +3 -3
- package/template/electron-react/renderer/scripts/createChunks.ts +26 -26
- package/template/electron-react/renderer/scripts/index.ts +1 -1
- package/template/electron-react/renderer/shared/components/componentInstance.tsx +80 -80
- package/template/electron-react/renderer/shared/components/index.ts +1 -1
- package/template/electron-react/renderer/shared/hooks/defineRouter/defineRouter.types.ts +33 -33
- package/template/electron-react/renderer/shared/hooks/defineRouter/deineRouter.tsx +161 -161
- package/template/electron-react/renderer/shared/hooks/defineRouter/index.ts +2 -2
- package/template/electron-react/renderer/shared/hooks/index.ts +6 -6
- package/template/electron-react/renderer/shared/hooks/useInterval.ts +26 -26
- package/template/electron-react/renderer/shared/hooks/useLoadingAction.ts +27 -27
- package/template/electron-react/renderer/shared/hooks/useLowPriorityState.ts +26 -26
- package/template/electron-react/renderer/shared/hooks/useSyncState.ts +15 -15
- package/template/electron-react/renderer/shared/hooks/useVisible.ts +27 -27
- package/template/electron-react/renderer/shared/service/api.ts +1 -1
- package/template/electron-react/renderer/shared/service/home.ts +9 -9
- package/template/electron-react/renderer/shared/service/index.ts +3 -3
- package/template/electron-react/renderer/shared/service/request.ts +5 -5
- package/template/electron-react/tsconfig.json +33 -33
- package/template/electron-react/tsconfig.node.json +10 -10
- package/template/electron-vue/.vscode/extensions.json +9 -9
- package/template/electron-vue/configs/createChunks.ts +26 -26
- package/template/electron-vue/configs/rsbuild.main.config.ts +54 -54
- package/template/electron-vue/configs/rsbuild.preload.config.ts +54 -54
- package/template/electron-vue/configs/rsbuild.renderer.config.ts +64 -64
- package/template/electron-vue/env.d.ts +18 -18
- package/template/electron-vue/eslint.config.mjs +115 -115
- package/template/electron-vue/package.json +87 -87
- package/template/electron-vue/pnpm-lock.yaml +10158 -10158
- package/template/electron-vue/postcss.config.cjs +9 -9
- package/template/electron-vue/renderer/domain/components/app.vue +18 -18
- package/template/electron-vue/renderer/domain/components/createComponentInstance.ts +43 -43
- package/template/electron-vue/renderer/domain/components/index.ts +2 -2
- package/template/electron-vue/renderer/domain/router/home/index.ts +2 -2
- package/template/electron-vue/renderer/domain/router/home/names.ts +3 -3
- package/template/electron-vue/renderer/domain/router/home/routes.ts +8 -8
- package/template/electron-vue/renderer/domain/router/index.ts +26 -26
- package/template/electron-vue/renderer/domain/router/names.ts +5 -5
- package/template/electron-vue/renderer/main.css +4 -4
- package/template/electron-vue/renderer/main.ts +7 -7
- package/template/electron-vue/renderer/pages/home/view.vue +12 -12
- package/template/electron-vue/renderer/pages/index.ts +1 -1
- package/template/electron-vue/renderer/pages/index.vue +3 -3
- package/template/electron-vue/renderer/pages/not-found.vue +3 -3
- package/template/electron-vue/renderer/shared/hooks/index.ts +2 -2
- package/template/electron-vue/renderer/shared/hooks/useList.ts +86 -86
- package/template/electron-vue/renderer/shared/hooks/useVisible.ts +27 -27
- package/template/electron-vue/renderer/shared/service/api.ts +1 -1
- package/template/electron-vue/renderer/shared/service/home.ts +7 -7
- package/template/electron-vue/renderer/shared/service/index.ts +3 -3
- package/template/electron-vue/renderer/shared/service/request.ts +5 -5
- package/template/electron-vue/tsconfig.json +25 -25
- package/template/electron-vue/tsconfig.node.json +10 -10
- package/template/lib/workspace/.storybook/main.ts +16 -16
- package/template/lib/workspace/.storybook/preview.tsx +17 -17
- package/template/lib/workspace/eslint.config.mjs +119 -119
- package/template/lib/workspace/packages/react/src/button/button.stories.ts +44 -44
- package/template/web-app/react-rsbuild/.vscode/extensions.json +7 -7
- package/template/web-app/react-rsbuild/.vscode/settings.json +4 -4
- package/template/web-app/react-rsbuild/domain/components/app-context.tsx +31 -31
- package/template/web-app/react-rsbuild/domain/components/app.tsx +25 -25
- package/template/web-app/react-rsbuild/domain/components/index.ts +1 -1
- package/template/web-app/react-rsbuild/domain/models/app.ts +7 -7
- package/template/web-app/react-rsbuild/domain/router/components/index.ts +2 -2
- package/template/web-app/react-rsbuild/domain/router/components/route-layout.tsx +19 -19
- package/template/web-app/react-rsbuild/domain/router/components/sub-route-outlet.tsx +22 -22
- package/template/web-app/react-rsbuild/domain/router/home/ids.ts +3 -3
- package/template/web-app/react-rsbuild/domain/router/home/index.ts +2 -2
- package/template/web-app/react-rsbuild/domain/router/home/routes.tsx +13 -13
- package/template/web-app/react-rsbuild/domain/router/ids.ts +6 -6
- package/template/web-app/react-rsbuild/domain/router/index.ts +4 -4
- package/template/web-app/react-rsbuild/domain/router/router.tsx +28 -28
- package/template/web-app/react-rsbuild/domain/router/router.types.ts +3 -3
- package/template/web-app/react-rsbuild/eslint.config.js +107 -107
- package/template/web-app/react-rsbuild/main.tsx +6 -6
- package/template/web-app/react-rsbuild/package.json +79 -79
- package/template/web-app/react-rsbuild/pages/home/index.ts +1 -1
- package/template/web-app/react-rsbuild/pages/index.tsx +18 -18
- package/template/web-app/react-rsbuild/pages/not-found.tsx +3 -3
- package/template/web-app/react-rsbuild/postcss.config.cjs +8 -8
- package/template/web-app/react-rsbuild/rsbuild.config.ts +91 -91
- package/template/web-app/react-rsbuild/scripts/createChunks.ts +26 -26
- package/template/web-app/react-rsbuild/scripts/index.ts +1 -1
- package/template/web-app/react-rsbuild/shared/components/componentInstance.tsx +80 -80
- package/template/web-app/react-rsbuild/shared/components/index.ts +1 -1
- package/template/web-app/react-rsbuild/shared/hooks/defineRouter/defineRouter.types.ts +33 -33
- package/template/web-app/react-rsbuild/shared/hooks/defineRouter/deineRouter.tsx +161 -161
- package/template/web-app/react-rsbuild/shared/hooks/defineRouter/index.ts +2 -2
- package/template/web-app/react-rsbuild/shared/hooks/index.ts +7 -6
- package/template/web-app/react-rsbuild/shared/hooks/useDebounceFn.ts +37 -0
- package/template/web-app/react-rsbuild/shared/hooks/useInterval.ts +26 -26
- package/template/web-app/react-rsbuild/shared/hooks/useLazyRender.ts +30 -0
- package/template/web-app/react-rsbuild/shared/hooks/useLowPriorityState.ts +26 -26
- package/template/web-app/react-rsbuild/shared/hooks/useSyncState.ts +15 -15
- package/template/web-app/react-rsbuild/shared/hooks/useVisible.ts +27 -27
- package/template/web-app/react-rsbuild/shared/service/api.ts +1 -1
- package/template/web-app/react-rsbuild/shared/service/home.ts +9 -9
- package/template/web-app/react-rsbuild/shared/service/index.ts +3 -3
- package/template/web-app/react-rsbuild/shared/service/request.ts +5 -5
- package/template/web-app/react-rsbuild/tsconfig.json +33 -33
- package/template/web-app/react-rsbuild/tsconfig.node.json +10 -10
- package/template/web-app/react-vite/.gitignore +3 -3
- package/template/web-app/react-vite/.vscode/extensions.json +7 -7
- package/template/web-app/react-vite/.vscode/settings.json +4 -4
- package/template/web-app/react-vite/domain/components/index.ts +1 -1
- package/template/web-app/react-vite/domain/models/app.ts +7 -7
- package/template/web-app/react-vite/domain/router/components/route-layout.tsx +19 -19
- package/template/web-app/react-vite/domain/router/components/sub-route-outlet.tsx +22 -22
- package/template/web-app/react-vite/domain/router/home/ids.ts +3 -3
- package/template/web-app/react-vite/domain/router/home/index.ts +2 -2
- package/template/web-app/react-vite/domain/router/home/routes.tsx +13 -13
- package/template/web-app/react-vite/domain/router/ids.ts +6 -6
- package/template/web-app/react-vite/domain/router/router.tsx +28 -28
- package/template/web-app/react-vite/domain/router/router.types.ts +3 -3
- package/template/web-app/react-vite/eslint.config.js +114 -114
- package/template/web-app/react-vite/mockUtils.ts +6 -6
- package/template/web-app/react-vite/package.json +78 -78
- package/template/web-app/react-vite/pages/index.tsx +18 -18
- package/template/web-app/react-vite/pages/not-found.tsx +3 -3
- package/template/web-app/react-vite/postcss.config.cjs +8 -8
- package/template/web-app/react-vite/scripts/createChunks.ts +27 -27
- package/template/web-app/react-vite/scripts/index.ts +1 -1
- package/template/web-app/react-vite/shared/hooks/defineRouter/defineRouter.types.ts +33 -33
- package/template/web-app/react-vite/shared/hooks/defineRouter/deineRouter.tsx +161 -161
- package/template/web-app/react-vite/shared/hooks/defineRouter/index.ts +2 -2
- package/template/web-app/react-vite/shared/hooks/index.ts +7 -6
- package/template/web-app/react-vite/shared/hooks/useDebounceFn.ts +37 -0
- package/template/web-app/react-vite/shared/hooks/useInterval.ts +26 -26
- package/template/web-app/react-vite/shared/hooks/useLazyRender.ts +30 -0
- package/template/web-app/react-vite/shared/hooks/useLowPriorityState.ts +26 -26
- package/template/web-app/react-vite/shared/hooks/useSyncState.ts +15 -15
- package/template/web-app/react-vite/shared/hooks/useVisible.ts +27 -27
- package/template/web-app/react-vite/shared/service/api.ts +1 -1
- package/template/web-app/react-vite/shared/service/home.ts +9 -9
- package/template/web-app/react-vite/shared/service/index.ts +3 -3
- package/template/web-app/react-vite/shared/service/request.ts +5 -5
- package/template/web-app/react-vite/tsconfig.json +33 -33
- package/template/web-app/react-vite/tsconfig.node.json +10 -10
- package/template/web-app/vue/.vscode/extensions.json +9 -9
- package/template/web-app/vue/domain/components/app.vue +18 -18
- package/template/web-app/vue/domain/components/createComponentInstance.ts +43 -43
- package/template/web-app/vue/domain/components/index.ts +2 -2
- package/template/web-app/vue/domain/router/home/index.ts +2 -2
- package/template/web-app/vue/domain/router/home/names.ts +3 -3
- package/template/web-app/vue/domain/router/home/routes.ts +8 -8
- package/template/web-app/vue/domain/router/index.ts +26 -26
- package/template/web-app/vue/domain/router/names.ts +5 -5
- package/template/web-app/vue/eslint.config.js +123 -123
- package/template/web-app/vue/main.css +4 -4
- package/template/web-app/vue/main.ts +7 -7
- package/template/web-app/vue/mockUtils.ts +6 -6
- package/template/web-app/vue/pages/home/view.vue +16 -16
- package/template/web-app/vue/pages/index.ts +1 -1
- package/template/web-app/vue/pages/index.vue +3 -3
- package/template/web-app/vue/pages/not-found.vue +3 -3
- package/template/web-app/vue/postcss.config.cjs +8 -8
- package/template/web-app/vue/scripts/createChunks.ts +27 -27
- package/template/web-app/vue/scripts/index.ts +1 -1
- package/template/web-app/vue/shared/hooks/index.ts +2 -2
- package/template/web-app/vue/shared/hooks/useList.ts +86 -86
- package/template/web-app/vue/shared/hooks/useVisible.ts +27 -27
- package/template/web-app/vue/shared/service/api.ts +1 -1
- package/template/web-app/vue/shared/service/home.ts +7 -7
- package/template/web-app/vue/shared/service/index.ts +3 -3
- package/template/web-app/vue/shared/service/request.ts +5 -5
- package/template/web-app/vue/tsconfig.json +25 -25
- package/template/web-app/vue/tsconfig.node.json +10 -10
- package/template/web-app/vue/vite-env.d.ts +18 -18
- package/template/web-app/vue/vite.config.ts +68 -68
- package/template/web-app/vue-rsbuild/.vscode/extensions.json +9 -9
- package/template/web-app/vue-rsbuild/domain/components/app.vue +18 -18
- package/template/web-app/vue-rsbuild/domain/components/createComponentInstance.ts +43 -43
- package/template/web-app/vue-rsbuild/domain/components/index.ts +2 -2
- package/template/web-app/vue-rsbuild/domain/router/home/index.ts +2 -2
- package/template/web-app/vue-rsbuild/domain/router/home/names.ts +3 -3
- package/template/web-app/vue-rsbuild/domain/router/home/routes.ts +8 -8
- package/template/web-app/vue-rsbuild/domain/router/index.ts +26 -26
- package/template/web-app/vue-rsbuild/domain/router/names.ts +5 -5
- package/template/web-app/vue-rsbuild/env.d.ts +18 -18
- package/template/web-app/vue-rsbuild/eslint.config.js +114 -114
- package/template/web-app/vue-rsbuild/main.css +4 -4
- package/template/web-app/vue-rsbuild/main.ts +7 -7
- package/template/web-app/vue-rsbuild/package.json +73 -73
- package/template/web-app/vue-rsbuild/pages/home/view.vue +16 -16
- package/template/web-app/vue-rsbuild/pages/index.ts +1 -1
- package/template/web-app/vue-rsbuild/pages/index.vue +3 -3
- package/template/web-app/vue-rsbuild/pages/not-found.vue +3 -3
- package/template/web-app/vue-rsbuild/postcss.config.cjs +9 -9
- package/template/web-app/vue-rsbuild/rsbuild.config.ts +77 -77
- package/template/web-app/vue-rsbuild/scripts/createChunks.ts +26 -26
- package/template/web-app/vue-rsbuild/scripts/index.ts +1 -1
- package/template/web-app/vue-rsbuild/shared/hooks/index.ts +2 -2
- package/template/web-app/vue-rsbuild/shared/hooks/useList.ts +86 -86
- package/template/web-app/vue-rsbuild/shared/hooks/useVisible.ts +27 -27
- package/template/web-app/vue-rsbuild/shared/service/api.ts +1 -1
- package/template/web-app/vue-rsbuild/shared/service/home.ts +7 -7
- package/template/web-app/vue-rsbuild/shared/service/index.ts +3 -3
- package/template/web-app/vue-rsbuild/shared/service/request.ts +5 -5
- package/template/web-app/vue-rsbuild/tsconfig.json +25 -25
- package/template/web-app/vue-rsbuild/tsconfig.node.json +10 -10
- package/template/web-extension/.vscode/extensions.json +7 -7
- package/template/web-extension/.vscode/settings.json +4 -4
- package/template/web-extension/.wxt/eslint-auto-imports.mjs +56 -56
- package/template/web-extension/.wxt/eslintrc-auto-import.json +21 -21
- package/template/web-extension/.wxt/tsconfig.json +27 -27
- package/template/web-extension/.wxt/types/globals.d.ts +15 -15
- package/template/web-extension/.wxt/types/i18n.d.ts +81 -81
- package/template/web-extension/.wxt/types/imports-module.d.ts +20 -20
- package/template/web-extension/.wxt/types/imports.d.ts +50 -50
- package/template/web-extension/.wxt/types/paths.d.ts +17 -17
- package/template/web-extension/.wxt/wxt.d.ts +7 -7
- package/template/web-extension/entrypoints/background/index.ts +7 -7
- package/template/web-extension/entrypoints/content/domain/app/index.ts +1 -1
- package/template/web-extension/entrypoints/content/domain/app/tools/index.ts +1 -1
- package/template/web-extension/entrypoints/content/domain/app/tools/insertApp.tsx +58 -58
- package/template/web-extension/entrypoints/content/modules/common/index.ts +2 -2
- package/template/web-extension/entrypoints/content/modules/common/insert.tsx +9 -9
- package/template/web-extension/entrypoints/content/modules/index.ts +1 -1
- package/template/web-extension/eslint.config.js +107 -107
- package/template/web-extension/package.json +86 -86
- package/template/web-extension/postcss.config.cjs +8 -8
- package/template/web-extension/shared/background/index.ts +1 -1
- package/template/web-extension/shared/background/message.ts +7 -7
- package/template/web-extension/shared/components/app-context/view.tsx +19 -19
- package/template/web-extension/shared/components/index.ts +1 -1
- package/template/web-extension/shared/hooks/index.ts +2 -2
- package/template/web-extension/shared/hooks/useSyncState.ts +15 -15
- package/template/web-extension/shared/hooks/useVisible.ts +27 -27
- package/template/web-extension/shared/service/index.ts +1 -1
- package/template/web-extension/shared/service/request.ts +5 -5
- package/template/web-extension/tsconfig.node.json +10 -10
- package/template/lib/workspace/node_modules/.pnpm/node_modules/react-lib/.gitignore +0 -26
- package/template/lib/workspace/node_modules/.pnpm/node_modules/ts-lib/.gitignore +0 -25
- package/template/lib/workspace/packages/ts/coverage/base.css +0 -224
- package/template/lib/workspace/packages/ts/coverage/block-navigation.js +0 -87
- package/template/lib/workspace/packages/ts/coverage/clover.xml +0 -16
- package/template/lib/workspace/packages/ts/coverage/coverage-final.json +0 -3
- package/template/lib/workspace/packages/ts/coverage/favicon.png +0 -0
- package/template/lib/workspace/packages/ts/coverage/index.html +0 -131
- package/template/lib/workspace/packages/ts/coverage/index.ts.html +0 -88
- package/template/lib/workspace/packages/ts/coverage/prettify.css +0 -1
- package/template/lib/workspace/packages/ts/coverage/prettify.js +0 -2
- package/template/lib/workspace/packages/ts/coverage/sort-arrow-sprite.png +0 -0
- package/template/lib/workspace/packages/ts/coverage/sorter.js +0 -196
- package/template/lib/workspace/packages/ts/coverage/sum.ts.html +0 -94
- package/template/web-app/react-rsbuild/shared/hooks/useLoadingAction.ts +0 -27
- package/template/web-app/react-vite/shared/hooks/useLoadingAction.ts +0 -27
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "vue-vite",
|
|
3
|
-
"private": true,
|
|
4
|
-
"version": "0.0.0",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"prepare": "husky",
|
|
8
|
-
"dev": "rsbuild dev",
|
|
9
|
-
"build": "rsbuild build",
|
|
10
|
-
"build:analyse": "rsbuild build --env-mode analyse",
|
|
11
|
-
"build:rsdoctor": "cross-env RSDOCTOR=true rsbuild build",
|
|
12
|
-
"preview": "rsbuild preview",
|
|
13
|
-
"up:rsbuild": "pnpm up @rsbuild/* -L",
|
|
14
|
-
"format": "prettier --write \"**/*.{vue,ts,js,tsx,jsx,json,css,scss,less}\"",
|
|
15
|
-
"lint": "vue-tsc --noEmit && eslint --no-error-on-unmatched-pattern && stylelint **/*.{css,scss,less}",
|
|
16
|
-
"lint:fix": "eslint --fix && stylelint **/*.{css,scss,less} --fix",
|
|
17
|
-
"cz": "cz",
|
|
18
|
-
"push": "npm run commit && git push",
|
|
19
|
-
"commit": "git add . && npm run cz",
|
|
20
|
-
"up:vite": "pnpm up vite @vitejs/* vite-plugin-* -L"
|
|
21
|
-
},
|
|
22
|
-
"dependencies": {
|
|
23
|
-
"axios": "1.7.9",
|
|
24
|
-
"es-toolkit": "1.39.8",
|
|
25
|
-
"pinia": "3.0.3",
|
|
26
|
-
"tailwindcss": "4.1.4",
|
|
27
|
-
"type-fest": "4.33.0",
|
|
28
|
-
"vue": "3.5.20",
|
|
29
|
-
"vue-router": "4.5.1"
|
|
30
|
-
},
|
|
31
|
-
"devDependencies": {
|
|
32
|
-
"@commitlint/cli": "17.6.1",
|
|
33
|
-
"@commitlint/config-conventional": "17.6.1",
|
|
34
|
-
"@commitlint/cz-commitlint": "17.5.0",
|
|
35
|
-
"@eslint/js": "9.15.0",
|
|
36
|
-
"@faker-js/faker": "8.4.1",
|
|
37
|
-
"@rsbuild/core": "1.5.10",
|
|
38
|
-
"@rsbuild/plugin-eslint": "1.1.2",
|
|
39
|
-
"@rsbuild/plugin-type-check": "1.2.4",
|
|
40
|
-
"@rsbuild/plugin-vue": "1.1.2",
|
|
41
|
-
"@rsdoctor/rspack-plugin": "1.2.3",
|
|
42
|
-
"@tailwindcss/postcss": "4.1.4",
|
|
43
|
-
"@types/mockjs": "1.0.10",
|
|
44
|
-
"autoprefixer": "10.4.14",
|
|
45
|
-
"commitizen": "4.3.0",
|
|
46
|
-
"cross-env": "7.0.3",
|
|
47
|
-
"cssnano": "6.0.0",
|
|
48
|
-
"eslint": "9.17.0",
|
|
49
|
-
"eslint-import-resolver-typescript": "3.7.0",
|
|
50
|
-
"eslint-plugin-import": "2.31.0",
|
|
51
|
-
"eslint-plugin-vue": "9.32.0",
|
|
52
|
-
"globals": "15.12.0",
|
|
53
|
-
"husky": "9.1.6",
|
|
54
|
-
"inquirer": "8.1.2",
|
|
55
|
-
"postcss": "8.4.38",
|
|
56
|
-
"postcss-html": "1.8.0",
|
|
57
|
-
"postcss-import": "16.1.0",
|
|
58
|
-
"postcss-nesting": "12.1.1",
|
|
59
|
-
"prettier": "3.2.5",
|
|
60
|
-
"rollup-plugin-visualizer": "5.12.0",
|
|
61
|
-
"stylelint": "16.10.0",
|
|
62
|
-
"stylelint-config-standard-scss": "13.1.0",
|
|
63
|
-
"stylelint-webpack-plugin": "5.0.0",
|
|
64
|
-
"typescript": "5.8.2",
|
|
65
|
-
"typescript-eslint": "8.15.0",
|
|
66
|
-
"vue-tsc": "3.0.6"
|
|
67
|
-
},
|
|
68
|
-
"config": {
|
|
69
|
-
"commitizen": {
|
|
70
|
-
"path": "@commitlint/cz-commitlint"
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "vue-vite",
|
|
3
|
+
"private": true,
|
|
4
|
+
"version": "0.0.0",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"prepare": "husky",
|
|
8
|
+
"dev": "rsbuild dev",
|
|
9
|
+
"build": "rsbuild build",
|
|
10
|
+
"build:analyse": "rsbuild build --env-mode analyse",
|
|
11
|
+
"build:rsdoctor": "cross-env RSDOCTOR=true rsbuild build",
|
|
12
|
+
"preview": "rsbuild preview",
|
|
13
|
+
"up:rsbuild": "pnpm up @rsbuild/* -L",
|
|
14
|
+
"format": "prettier --write \"**/*.{vue,ts,js,tsx,jsx,json,css,scss,less}\"",
|
|
15
|
+
"lint": "vue-tsc --noEmit && eslint --no-error-on-unmatched-pattern && stylelint **/*.{css,scss,less}",
|
|
16
|
+
"lint:fix": "eslint --fix && stylelint **/*.{css,scss,less} --fix",
|
|
17
|
+
"cz": "cz",
|
|
18
|
+
"push": "npm run commit && git push",
|
|
19
|
+
"commit": "git add . && npm run cz",
|
|
20
|
+
"up:vite": "pnpm up vite @vitejs/* vite-plugin-* -L"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"axios": "1.7.9",
|
|
24
|
+
"es-toolkit": "1.39.8",
|
|
25
|
+
"pinia": "3.0.3",
|
|
26
|
+
"tailwindcss": "4.1.4",
|
|
27
|
+
"type-fest": "4.33.0",
|
|
28
|
+
"vue": "3.5.20",
|
|
29
|
+
"vue-router": "4.5.1"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@commitlint/cli": "17.6.1",
|
|
33
|
+
"@commitlint/config-conventional": "17.6.1",
|
|
34
|
+
"@commitlint/cz-commitlint": "17.5.0",
|
|
35
|
+
"@eslint/js": "9.15.0",
|
|
36
|
+
"@faker-js/faker": "8.4.1",
|
|
37
|
+
"@rsbuild/core": "1.5.10",
|
|
38
|
+
"@rsbuild/plugin-eslint": "1.1.2",
|
|
39
|
+
"@rsbuild/plugin-type-check": "1.2.4",
|
|
40
|
+
"@rsbuild/plugin-vue": "1.1.2",
|
|
41
|
+
"@rsdoctor/rspack-plugin": "1.2.3",
|
|
42
|
+
"@tailwindcss/postcss": "4.1.4",
|
|
43
|
+
"@types/mockjs": "1.0.10",
|
|
44
|
+
"autoprefixer": "10.4.14",
|
|
45
|
+
"commitizen": "4.3.0",
|
|
46
|
+
"cross-env": "7.0.3",
|
|
47
|
+
"cssnano": "6.0.0",
|
|
48
|
+
"eslint": "9.17.0",
|
|
49
|
+
"eslint-import-resolver-typescript": "3.7.0",
|
|
50
|
+
"eslint-plugin-import": "2.31.0",
|
|
51
|
+
"eslint-plugin-vue": "9.32.0",
|
|
52
|
+
"globals": "15.12.0",
|
|
53
|
+
"husky": "9.1.6",
|
|
54
|
+
"inquirer": "8.1.2",
|
|
55
|
+
"postcss": "8.4.38",
|
|
56
|
+
"postcss-html": "1.8.0",
|
|
57
|
+
"postcss-import": "16.1.0",
|
|
58
|
+
"postcss-nesting": "12.1.1",
|
|
59
|
+
"prettier": "3.2.5",
|
|
60
|
+
"rollup-plugin-visualizer": "5.12.0",
|
|
61
|
+
"stylelint": "16.10.0",
|
|
62
|
+
"stylelint-config-standard-scss": "13.1.0",
|
|
63
|
+
"stylelint-webpack-plugin": "5.0.0",
|
|
64
|
+
"typescript": "5.8.2",
|
|
65
|
+
"typescript-eslint": "8.15.0",
|
|
66
|
+
"vue-tsc": "3.0.6"
|
|
67
|
+
},
|
|
68
|
+
"config": {
|
|
69
|
+
"commitizen": {
|
|
70
|
+
"path": "@commitlint/cz-commitlint"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import { fetchHomeData } from '@/shared/service'
|
|
3
|
-
|
|
4
|
-
const data = fetchHomeData()
|
|
5
|
-
console.log('data', data)
|
|
6
|
-
</script>
|
|
7
|
-
|
|
8
|
-
<template>
|
|
9
|
-
<div class="root">Home</div>
|
|
10
|
-
</template>
|
|
11
|
-
|
|
12
|
-
<style scoped>
|
|
13
|
-
.root {
|
|
14
|
-
@apply tw:flex tw:items-center tw:justify-center;
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { fetchHomeData } from '@/shared/service'
|
|
3
|
+
|
|
4
|
+
const data = fetchHomeData()
|
|
5
|
+
console.log('data', data)
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<template>
|
|
9
|
+
<div class="root">Home</div>
|
|
10
|
+
</template>
|
|
11
|
+
|
|
12
|
+
<style scoped>
|
|
13
|
+
.root {
|
|
14
|
+
@apply tw:flex tw:items-center tw:justify-center;
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from './index.vue'
|
|
1
|
+
export { default } from './index.vue'
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div><router-view /></div>
|
|
3
|
-
</template>
|
|
1
|
+
<template>
|
|
2
|
+
<div><router-view /></div>
|
|
3
|
+
</template>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div>404</div>
|
|
3
|
-
</template>
|
|
1
|
+
<template>
|
|
2
|
+
<div>404</div>
|
|
3
|
+
</template>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
plugins: {
|
|
3
|
-
'postcss-import': {},
|
|
4
|
-
'@tailwindcss/postcss': {},
|
|
5
|
-
'postcss-nesting': {},
|
|
6
|
-
autoprefixer: {},
|
|
7
|
-
...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {})
|
|
8
|
-
}
|
|
9
|
-
}
|
|
1
|
+
module.exports = {
|
|
2
|
+
plugins: {
|
|
3
|
+
'postcss-import': {},
|
|
4
|
+
'@tailwindcss/postcss': {},
|
|
5
|
+
'postcss-nesting': {},
|
|
6
|
+
autoprefixer: {},
|
|
7
|
+
...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {})
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
import { defineConfig, loadEnv } from '@rsbuild/core'
|
|
2
|
-
import { pluginVue } from '@rsbuild/plugin-vue'
|
|
3
|
-
import { pluginEslint } from '@rsbuild/plugin-eslint'
|
|
4
|
-
import StylelintWebpackPlugin from 'stylelint-webpack-plugin'
|
|
5
|
-
import { pluginTypeCheck } from '@rsbuild/plugin-type-check'
|
|
6
|
-
import { RsdoctorRspackPlugin } from '@rsdoctor/rspack-plugin'
|
|
7
|
-
import { createChunks } from './scripts'
|
|
8
|
-
|
|
9
|
-
export default defineConfig(({ envMode, command }) => {
|
|
10
|
-
const { parsed: env } = loadEnv()
|
|
11
|
-
return {
|
|
12
|
-
html: {
|
|
13
|
-
template: './index.html',
|
|
14
|
-
title: 'Rsbuild + Vue + TS',
|
|
15
|
-
favicon: './shared/assets/vue.svg'
|
|
16
|
-
},
|
|
17
|
-
source: {
|
|
18
|
-
entry: {
|
|
19
|
-
index: './main.ts'
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
resolve: {
|
|
23
|
-
alias: {
|
|
24
|
-
'@': __dirname
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
output: {
|
|
28
|
-
distPath: {
|
|
29
|
-
root: 'dist'
|
|
30
|
-
},
|
|
31
|
-
cleanDistPath: true
|
|
32
|
-
},
|
|
33
|
-
dev: {
|
|
34
|
-
progressBar: command === 'build'
|
|
35
|
-
},
|
|
36
|
-
tools: {
|
|
37
|
-
rspack: {
|
|
38
|
-
plugins: [
|
|
39
|
-
new StylelintWebpackPlugin(),
|
|
40
|
-
process.env.RSDOCTOR && new RsdoctorRspackPlugin()
|
|
41
|
-
]
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
plugins: [
|
|
45
|
-
command !== 'build' && pluginTypeCheck(),
|
|
46
|
-
command !== 'build' &&
|
|
47
|
-
pluginEslint({
|
|
48
|
-
eslintPluginOptions: {
|
|
49
|
-
configType: 'flat'
|
|
50
|
-
}
|
|
51
|
-
}),
|
|
52
|
-
pluginVue()
|
|
53
|
-
],
|
|
54
|
-
performance: {
|
|
55
|
-
removeConsole: command === 'build' ? ['log'] : false,
|
|
56
|
-
chunkSplit: {
|
|
57
|
-
strategy: 'custom',
|
|
58
|
-
splitChunks: {
|
|
59
|
-
minChunks: 1,
|
|
60
|
-
cacheGroups: createChunks([{ libs: ['vue', 'vue-router'], name: 'vue' }])
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
bundleAnalyze: envMode === 'analyse' ? { openAnalyzer: true } : void 0
|
|
64
|
-
},
|
|
65
|
-
server: {
|
|
66
|
-
base: env.PUBLIC_BASE_URL,
|
|
67
|
-
host: '0.0.0.0',
|
|
68
|
-
compress: false,
|
|
69
|
-
proxy: [
|
|
70
|
-
{
|
|
71
|
-
context: [env.PUBLIC_API_HOST],
|
|
72
|
-
target: 'http://127.0.0.1:3000'
|
|
73
|
-
}
|
|
74
|
-
]
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
})
|
|
1
|
+
import { defineConfig, loadEnv } from '@rsbuild/core'
|
|
2
|
+
import { pluginVue } from '@rsbuild/plugin-vue'
|
|
3
|
+
import { pluginEslint } from '@rsbuild/plugin-eslint'
|
|
4
|
+
import StylelintWebpackPlugin from 'stylelint-webpack-plugin'
|
|
5
|
+
import { pluginTypeCheck } from '@rsbuild/plugin-type-check'
|
|
6
|
+
import { RsdoctorRspackPlugin } from '@rsdoctor/rspack-plugin'
|
|
7
|
+
import { createChunks } from './scripts'
|
|
8
|
+
|
|
9
|
+
export default defineConfig(({ envMode, command }) => {
|
|
10
|
+
const { parsed: env } = loadEnv()
|
|
11
|
+
return {
|
|
12
|
+
html: {
|
|
13
|
+
template: './index.html',
|
|
14
|
+
title: 'Rsbuild + Vue + TS',
|
|
15
|
+
favicon: './shared/assets/vue.svg'
|
|
16
|
+
},
|
|
17
|
+
source: {
|
|
18
|
+
entry: {
|
|
19
|
+
index: './main.ts'
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
resolve: {
|
|
23
|
+
alias: {
|
|
24
|
+
'@': __dirname
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
output: {
|
|
28
|
+
distPath: {
|
|
29
|
+
root: 'dist'
|
|
30
|
+
},
|
|
31
|
+
cleanDistPath: true
|
|
32
|
+
},
|
|
33
|
+
dev: {
|
|
34
|
+
progressBar: command === 'build'
|
|
35
|
+
},
|
|
36
|
+
tools: {
|
|
37
|
+
rspack: {
|
|
38
|
+
plugins: [
|
|
39
|
+
new StylelintWebpackPlugin(),
|
|
40
|
+
process.env.RSDOCTOR && new RsdoctorRspackPlugin()
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
plugins: [
|
|
45
|
+
command !== 'build' && pluginTypeCheck(),
|
|
46
|
+
command !== 'build' &&
|
|
47
|
+
pluginEslint({
|
|
48
|
+
eslintPluginOptions: {
|
|
49
|
+
configType: 'flat'
|
|
50
|
+
}
|
|
51
|
+
}),
|
|
52
|
+
pluginVue()
|
|
53
|
+
],
|
|
54
|
+
performance: {
|
|
55
|
+
removeConsole: command === 'build' ? ['log'] : false,
|
|
56
|
+
chunkSplit: {
|
|
57
|
+
strategy: 'custom',
|
|
58
|
+
splitChunks: {
|
|
59
|
+
minChunks: 1,
|
|
60
|
+
cacheGroups: createChunks([{ libs: ['vue', 'vue-router'], name: 'vue' }])
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
bundleAnalyze: envMode === 'analyse' ? { openAnalyzer: true } : void 0
|
|
64
|
+
},
|
|
65
|
+
server: {
|
|
66
|
+
base: env.PUBLIC_BASE_URL,
|
|
67
|
+
host: '0.0.0.0',
|
|
68
|
+
compress: false,
|
|
69
|
+
proxy: [
|
|
70
|
+
{
|
|
71
|
+
context: [env.PUBLIC_API_HOST],
|
|
72
|
+
target: 'http://127.0.0.1:3000'
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
})
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { SplitChunks } from '@rsbuild/core'
|
|
2
|
-
|
|
3
|
-
export function createChunks(
|
|
4
|
-
chunks: Array<{ name: string; libs: string[] | RegExp; priority?: number }>
|
|
5
|
-
) {
|
|
6
|
-
const result: Exclude<SplitChunks, false>['cacheGroups'] = {
|
|
7
|
-
vendors: {
|
|
8
|
-
test: /[\\/]node_modules[\\/]/,
|
|
9
|
-
chunks: 'all',
|
|
10
|
-
name: 'vendors',
|
|
11
|
-
priority: -1
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
chunks.forEach(({ name, libs, priority }) => {
|
|
15
|
-
result[name] = {
|
|
16
|
-
test: Array.isArray(libs)
|
|
17
|
-
? new RegExp(`[\\\\/]node_modules[\\\\/](${libs.join('|')})[\\\\/]`)
|
|
18
|
-
: libs,
|
|
19
|
-
chunks: 'all',
|
|
20
|
-
name,
|
|
21
|
-
priority
|
|
22
|
-
}
|
|
23
|
-
return result
|
|
24
|
-
})
|
|
25
|
-
return result
|
|
26
|
-
}
|
|
1
|
+
import { SplitChunks } from '@rsbuild/core'
|
|
2
|
+
|
|
3
|
+
export function createChunks(
|
|
4
|
+
chunks: Array<{ name: string; libs: string[] | RegExp; priority?: number }>
|
|
5
|
+
) {
|
|
6
|
+
const result: Exclude<SplitChunks, false>['cacheGroups'] = {
|
|
7
|
+
vendors: {
|
|
8
|
+
test: /[\\/]node_modules[\\/]/,
|
|
9
|
+
chunks: 'all',
|
|
10
|
+
name: 'vendors',
|
|
11
|
+
priority: -1
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
chunks.forEach(({ name, libs, priority }) => {
|
|
15
|
+
result[name] = {
|
|
16
|
+
test: Array.isArray(libs)
|
|
17
|
+
? new RegExp(`[\\\\/]node_modules[\\\\/](${libs.join('|')})[\\\\/]`)
|
|
18
|
+
: libs,
|
|
19
|
+
chunks: 'all',
|
|
20
|
+
name,
|
|
21
|
+
priority
|
|
22
|
+
}
|
|
23
|
+
return result
|
|
24
|
+
})
|
|
25
|
+
return result
|
|
26
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './createChunks'
|
|
1
|
+
export * from './createChunks'
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { default as useVisible } from './useVisible'
|
|
2
|
-
export { default as useList } from './useList'
|
|
1
|
+
export { default as useVisible } from './useVisible'
|
|
2
|
+
export { default as useList } from './useList'
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
import { ref, reactive, computed, unref } from 'vue'
|
|
2
|
-
import { cloneDeep, pick, isNil } from 'es-toolkit'
|
|
3
|
-
import { assign, size, max } from 'es-toolkit/compat'
|
|
4
|
-
|
|
5
|
-
export interface configType<ListItem, P> {
|
|
6
|
-
/**
|
|
7
|
-
* @description 默认请求参数
|
|
8
|
-
*/
|
|
9
|
-
defaultParams: P
|
|
10
|
-
/** 列表请求 */
|
|
11
|
-
fetch: (state: { params: P }) => Promise<{
|
|
12
|
-
list: ListItem[]
|
|
13
|
-
page?: number
|
|
14
|
-
pageSize?: number
|
|
15
|
-
total?: number
|
|
16
|
-
sum?: Record<string, any>
|
|
17
|
-
}>
|
|
18
|
-
/** 初始化列表时的配置 */
|
|
19
|
-
initConfig?: {
|
|
20
|
-
/** 初始化的时候需要保留值的字段 */
|
|
21
|
-
keepParamsKeys?: Array<keyof P>
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export default function createListStore<
|
|
26
|
-
P extends { page?: number; pageSize?: number; [key: string]: any },
|
|
27
|
-
ListItem extends Record<string, any> = Record<string, any>
|
|
28
|
-
>(config: configType<ListItem, P>) {
|
|
29
|
-
const loading = ref(true)
|
|
30
|
-
const total = ref(0)
|
|
31
|
-
const params = reactive(cloneDeep(config.defaultParams))
|
|
32
|
-
const list = ref<ListItem[]>([])
|
|
33
|
-
const sum = reactive<Record<string, any>>({})
|
|
34
|
-
const selected = ref<ListItem[]>([])
|
|
35
|
-
const selectedKeys = ref<(string | number)[]>([])
|
|
36
|
-
const pagination = computed(() => ({
|
|
37
|
-
current: params.page || 0,
|
|
38
|
-
pageSize: params.pageSize || 0,
|
|
39
|
-
total: total.value
|
|
40
|
-
}))
|
|
41
|
-
const selectedLen = computed(() => {
|
|
42
|
-
return max([size(selected.value), size(selectedKeys.value)]) || 0
|
|
43
|
-
})
|
|
44
|
-
function resetParams() {
|
|
45
|
-
assign(params, cloneDeep(config.defaultParams))
|
|
46
|
-
}
|
|
47
|
-
async function fetchList(arg?: { params?: Partial<P>; isConcat?: boolean; isInit?: boolean }) {
|
|
48
|
-
loading.value = true
|
|
49
|
-
try {
|
|
50
|
-
if (arg?.isInit) {
|
|
51
|
-
assign(
|
|
52
|
-
params,
|
|
53
|
-
cloneDeep(config.defaultParams),
|
|
54
|
-
pick(params, (config?.initConfig?.keepParamsKeys || []) as never)
|
|
55
|
-
)
|
|
56
|
-
}
|
|
57
|
-
assign(params, arg?.params)
|
|
58
|
-
const result = await config.fetch({ params: unref(params) })
|
|
59
|
-
if (!isNil(result.page) && arg?.isConcat) {
|
|
60
|
-
list.value = [...list.value, ...result.list] as ListItem[]
|
|
61
|
-
} else {
|
|
62
|
-
list.value = result.list
|
|
63
|
-
}
|
|
64
|
-
sum.value = result.sum || {}
|
|
65
|
-
total.value = result.total || total.value
|
|
66
|
-
params.page = result.page || params.page
|
|
67
|
-
params.pageSize = result.pageSize || params.pageSize
|
|
68
|
-
} finally {
|
|
69
|
-
loading.value = false
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return {
|
|
74
|
-
loading,
|
|
75
|
-
total,
|
|
76
|
-
params,
|
|
77
|
-
list,
|
|
78
|
-
sum,
|
|
79
|
-
selected,
|
|
80
|
-
selectedKeys,
|
|
81
|
-
pagination,
|
|
82
|
-
selectedLen,
|
|
83
|
-
resetParams,
|
|
84
|
-
fetchList
|
|
85
|
-
}
|
|
86
|
-
}
|
|
1
|
+
import { ref, reactive, computed, unref } from 'vue'
|
|
2
|
+
import { cloneDeep, pick, isNil } from 'es-toolkit'
|
|
3
|
+
import { assign, size, max } from 'es-toolkit/compat'
|
|
4
|
+
|
|
5
|
+
export interface configType<ListItem, P> {
|
|
6
|
+
/**
|
|
7
|
+
* @description 默认请求参数
|
|
8
|
+
*/
|
|
9
|
+
defaultParams: P
|
|
10
|
+
/** 列表请求 */
|
|
11
|
+
fetch: (state: { params: P }) => Promise<{
|
|
12
|
+
list: ListItem[]
|
|
13
|
+
page?: number
|
|
14
|
+
pageSize?: number
|
|
15
|
+
total?: number
|
|
16
|
+
sum?: Record<string, any>
|
|
17
|
+
}>
|
|
18
|
+
/** 初始化列表时的配置 */
|
|
19
|
+
initConfig?: {
|
|
20
|
+
/** 初始化的时候需要保留值的字段 */
|
|
21
|
+
keepParamsKeys?: Array<keyof P>
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default function createListStore<
|
|
26
|
+
P extends { page?: number; pageSize?: number; [key: string]: any },
|
|
27
|
+
ListItem extends Record<string, any> = Record<string, any>
|
|
28
|
+
>(config: configType<ListItem, P>) {
|
|
29
|
+
const loading = ref(true)
|
|
30
|
+
const total = ref(0)
|
|
31
|
+
const params = reactive(cloneDeep(config.defaultParams))
|
|
32
|
+
const list = ref<ListItem[]>([])
|
|
33
|
+
const sum = reactive<Record<string, any>>({})
|
|
34
|
+
const selected = ref<ListItem[]>([])
|
|
35
|
+
const selectedKeys = ref<(string | number)[]>([])
|
|
36
|
+
const pagination = computed(() => ({
|
|
37
|
+
current: params.page || 0,
|
|
38
|
+
pageSize: params.pageSize || 0,
|
|
39
|
+
total: total.value
|
|
40
|
+
}))
|
|
41
|
+
const selectedLen = computed(() => {
|
|
42
|
+
return max([size(selected.value), size(selectedKeys.value)]) || 0
|
|
43
|
+
})
|
|
44
|
+
function resetParams() {
|
|
45
|
+
assign(params, cloneDeep(config.defaultParams))
|
|
46
|
+
}
|
|
47
|
+
async function fetchList(arg?: { params?: Partial<P>; isConcat?: boolean; isInit?: boolean }) {
|
|
48
|
+
loading.value = true
|
|
49
|
+
try {
|
|
50
|
+
if (arg?.isInit) {
|
|
51
|
+
assign(
|
|
52
|
+
params,
|
|
53
|
+
cloneDeep(config.defaultParams),
|
|
54
|
+
pick(params, (config?.initConfig?.keepParamsKeys || []) as never)
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
assign(params, arg?.params)
|
|
58
|
+
const result = await config.fetch({ params: unref(params) })
|
|
59
|
+
if (!isNil(result.page) && arg?.isConcat) {
|
|
60
|
+
list.value = [...list.value, ...result.list] as ListItem[]
|
|
61
|
+
} else {
|
|
62
|
+
list.value = result.list
|
|
63
|
+
}
|
|
64
|
+
sum.value = result.sum || {}
|
|
65
|
+
total.value = result.total || total.value
|
|
66
|
+
params.page = result.page || params.page
|
|
67
|
+
params.pageSize = result.pageSize || params.pageSize
|
|
68
|
+
} finally {
|
|
69
|
+
loading.value = false
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return {
|
|
74
|
+
loading,
|
|
75
|
+
total,
|
|
76
|
+
params,
|
|
77
|
+
list,
|
|
78
|
+
sum,
|
|
79
|
+
selected,
|
|
80
|
+
selectedKeys,
|
|
81
|
+
pagination,
|
|
82
|
+
selectedLen,
|
|
83
|
+
resetParams,
|
|
84
|
+
fetchList
|
|
85
|
+
}
|
|
86
|
+
}
|