create-packer 1.45.19 → 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 (144) 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/preload/tools.ts +26 -0
  32. package/template/electron-react/renderer/domain/app/app.model.ts +7 -0
  33. package/template/electron-react/renderer/domain/app/components/app-context.tsx +31 -0
  34. package/template/electron-react/renderer/domain/app/components/app.tsx +25 -0
  35. package/template/electron-react/renderer/domain/app/components/index.ts +1 -0
  36. package/template/electron-react/renderer/domain/app/index.ts +3 -0
  37. package/template/electron-react/renderer/domain/app/startApp.tsx +6 -0
  38. package/template/electron-react/renderer/domain/router/components/index.ts +2 -0
  39. package/template/electron-react/renderer/domain/router/components/route-layout.tsx +19 -0
  40. package/template/electron-react/renderer/domain/router/components/sub-route-outlet.tsx +22 -0
  41. package/template/electron-react/renderer/domain/router/home/ids.ts +3 -0
  42. package/template/electron-react/renderer/domain/router/home/index.ts +2 -0
  43. package/template/electron-react/renderer/domain/router/home/routes.tsx +13 -0
  44. package/template/electron-react/renderer/domain/router/ids.ts +6 -0
  45. package/template/electron-react/renderer/domain/router/index.ts +4 -0
  46. package/template/electron-react/renderer/domain/router/router.tsx +28 -0
  47. package/template/electron-react/renderer/domain/router/router.types.ts +3 -0
  48. package/template/electron-react/renderer/global.d.ts +16 -0
  49. package/template/electron-react/renderer/index.html +11 -0
  50. package/template/electron-react/renderer/main.ts +3 -0
  51. package/template/electron-react/renderer/pages/home/index.ts +1 -0
  52. package/template/electron-react/renderer/pages/home/view.styled.ts +5 -0
  53. package/template/electron-react/renderer/pages/home/view.tsx +10 -0
  54. package/template/electron-react/renderer/pages/index.tsx +18 -0
  55. package/template/electron-react/renderer/pages/not-found.tsx +3 -0
  56. package/template/electron-react/renderer/public/rsbuild-logo.svg +1 -0
  57. package/template/electron-react/renderer/scripts/createChunks.ts +26 -0
  58. package/template/electron-react/renderer/scripts/index.ts +1 -0
  59. package/template/electron-react/renderer/shared/assets/react.svg +1 -0
  60. package/template/electron-react/renderer/shared/components/componentInstance.tsx +80 -0
  61. package/template/electron-react/renderer/shared/components/index.ts +1 -0
  62. package/template/electron-react/renderer/shared/constant/index.ts +0 -0
  63. package/template/electron-react/renderer/shared/hooks/defineRouter/defineRouter.types.ts +33 -0
  64. package/template/electron-react/renderer/shared/hooks/defineRouter/deineRouter.tsx +161 -0
  65. package/template/electron-react/renderer/shared/hooks/defineRouter/index.ts +2 -0
  66. package/template/electron-react/renderer/shared/hooks/index.ts +6 -0
  67. package/template/electron-react/renderer/shared/hooks/useInterval.ts +26 -0
  68. package/template/electron-react/renderer/shared/hooks/useLoadingAction.ts +27 -0
  69. package/template/electron-react/renderer/shared/hooks/useLowPriorityState.ts +26 -0
  70. package/template/electron-react/renderer/shared/hooks/useSyncState.ts +15 -0
  71. package/template/electron-react/renderer/shared/hooks/useVisible.ts +27 -0
  72. package/template/electron-react/renderer/shared/service/api.ts +1 -0
  73. package/template/electron-react/renderer/shared/service/home.ts +9 -0
  74. package/template/electron-react/renderer/shared/service/index.ts +3 -0
  75. package/template/electron-react/renderer/shared/service/request.ts +5 -0
  76. package/template/electron-react/renderer/shared/styles/global.ts +7 -0
  77. package/template/electron-react/renderer/shared/styles/index.ts +2 -0
  78. package/template/electron-react/renderer/shared/styles/theme.ts +60 -0
  79. package/template/electron-react/renderer/shared/tools/index.ts +0 -0
  80. package/template/electron-react/tsconfig.json +33 -0
  81. package/template/electron-react/tsconfig.node.json +10 -0
  82. package/template/electron-vue/.editorconfig +14 -0
  83. package/template/electron-vue/.env +3 -0
  84. package/template/electron-vue/.env.development +3 -0
  85. package/template/electron-vue/.gitignore +28 -0
  86. package/template/electron-vue/.husky/commit-msg +4 -0
  87. package/template/electron-vue/.husky/pre-commit +4 -0
  88. package/template/electron-vue/.prettierignore +6 -0
  89. package/template/electron-vue/.prettierrc +18 -0
  90. package/template/electron-vue/.stylelintignore +4 -0
  91. package/template/electron-vue/.stylelintrc +35 -0
  92. package/template/electron-vue/.vscode/extensions.json +9 -0
  93. package/template/electron-vue/README.md +14 -0
  94. package/template/electron-vue/assets/rspack.png +0 -0
  95. package/template/electron-vue/build.config.json +40 -0
  96. package/template/electron-vue/commitlint.config.cjs +1 -0
  97. package/template/electron-vue/configs/config.ts +25 -0
  98. package/template/electron-vue/configs/createChunks.ts +26 -0
  99. package/template/electron-vue/configs/rsbuild.main.config.ts +54 -0
  100. package/template/electron-vue/configs/rsbuild.preload.config.ts +54 -0
  101. package/template/electron-vue/configs/rsbuild.renderer.config.ts +64 -0
  102. package/template/electron-vue/env.d.ts +18 -0
  103. package/template/electron-vue/eslint.config.mjs +115 -0
  104. package/template/electron-vue/main/main.ts +83 -0
  105. package/template/electron-vue/main/tools/html.ts +8 -0
  106. package/template/electron-vue/main/tools/index.ts +1 -0
  107. package/template/electron-vue/package.json +87 -0
  108. package/template/electron-vue/pnpm-lock.yaml +10158 -0
  109. package/template/electron-vue/postcss.config.cjs +9 -0
  110. package/template/electron-vue/preload/index.ts +1 -0
  111. package/template/electron-vue/preload/tools.ts +26 -0
  112. package/template/electron-vue/renderer/domain/app/app.ts +4 -0
  113. package/template/electron-vue/renderer/domain/app/components/app.vue +18 -0
  114. package/template/electron-vue/renderer/domain/app/components/index.ts +1 -0
  115. package/template/electron-vue/renderer/domain/app/createComponentInstance.ts +43 -0
  116. package/template/electron-vue/renderer/domain/app/index.ts +3 -0
  117. package/template/electron-vue/renderer/domain/router/home/index.ts +2 -0
  118. package/template/electron-vue/renderer/domain/router/home/names.ts +3 -0
  119. package/template/electron-vue/renderer/domain/router/home/routes.ts +8 -0
  120. package/template/electron-vue/renderer/domain/router/index.ts +26 -0
  121. package/template/electron-vue/renderer/domain/router/names.ts +5 -0
  122. package/template/electron-vue/renderer/index.html +11 -0
  123. package/template/electron-vue/renderer/main.css +4 -0
  124. package/template/electron-vue/renderer/main.ts +6 -0
  125. package/template/electron-vue/renderer/pages/home/index.ts +1 -0
  126. package/template/electron-vue/renderer/pages/home/view.vue +12 -0
  127. package/template/electron-vue/renderer/pages/index.ts +1 -0
  128. package/template/electron-vue/renderer/pages/index.vue +3 -0
  129. package/template/electron-vue/renderer/pages/not-found.vue +3 -0
  130. package/template/electron-vue/renderer/public/vite.svg +1 -0
  131. package/template/electron-vue/renderer/shared/assets/vue.svg +1 -0
  132. package/template/electron-vue/renderer/shared/components/index.ts +0 -0
  133. package/template/electron-vue/renderer/shared/constant/index.ts +0 -0
  134. package/template/electron-vue/renderer/shared/hooks/index.ts +2 -0
  135. package/template/electron-vue/renderer/shared/hooks/useList.ts +86 -0
  136. package/template/electron-vue/renderer/shared/hooks/useVisible.ts +27 -0
  137. package/template/electron-vue/renderer/shared/service/api.ts +1 -0
  138. package/template/electron-vue/renderer/shared/service/home.ts +7 -0
  139. package/template/electron-vue/renderer/shared/service/index.ts +3 -0
  140. package/template/electron-vue/renderer/shared/service/request.ts +5 -0
  141. package/template/electron-vue/renderer/shared/tools/index.ts +0 -0
  142. package/template/electron-vue/tsconfig.json +25 -0
  143. package/template/electron-vue/tsconfig.node.json +10 -0
  144. package/template/web-app/react-rsbuild/rsbuild.config.ts +1 -1
@@ -0,0 +1,25 @@
1
+ import { ConfigParams } from '@rsbuild/core'
2
+ import { pluginEslint } from '@rsbuild/plugin-eslint'
3
+ import StylelintWebpackPlugin from 'stylelint-webpack-plugin'
4
+ import { pluginTypeCheck } from '@rsbuild/plugin-type-check'
5
+ import { RsdoctorRspackPlugin } from '@rsdoctor/rspack-plugin'
6
+
7
+ export function createPlugins({ command }: Pick<ConfigParams, 'command'>) {
8
+ return {
9
+ plugins: [
10
+ command !== 'build' && pluginTypeCheck(),
11
+ command !== 'build' &&
12
+ pluginEslint({
13
+ eslintPluginOptions: {
14
+ configType: 'flat'
15
+ }
16
+ })
17
+ ],
18
+ rspackPlugin: [
19
+ new StylelintWebpackPlugin(),
20
+ process.env.RSDOCTOR && new RsdoctorRspackPlugin()
21
+ ]
22
+ }
23
+ }
24
+
25
+ export const OUTPUT_ROOT = 'dist'
@@ -0,0 +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
+ }
@@ -0,0 +1,54 @@
1
+ import { defineConfig, loadEnv } from '@rsbuild/core'
2
+ import { createPlugins, OUTPUT_ROOT } from './config'
3
+
4
+ export default defineConfig(({ envMode, command }) => {
5
+ const { parsed: env } = loadEnv()
6
+ const { rspackPlugin, plugins } = createPlugins({ command })
7
+ return {
8
+ source: {
9
+ entry: {
10
+ main: './main/main.ts'
11
+ }
12
+ },
13
+ resolve: {
14
+ alias: {
15
+ '@': process.cwd()
16
+ }
17
+ },
18
+ output: {
19
+ distPath: { root: `${OUTPUT_ROOT}/main`, js: '' },
20
+ cleanDistPath: false,
21
+ filenameHash: false
22
+ },
23
+ dev: {
24
+ progressBar: command === 'build',
25
+ writeToDisk: true,
26
+ hmr: false,
27
+ liveReload: false
28
+ },
29
+ tools: {
30
+ htmlPlugin: false,
31
+ rspack: {
32
+ target: 'electron-main',
33
+ plugins: rspackPlugin
34
+ }
35
+ },
36
+ plugins,
37
+ performance: {
38
+ removeConsole: command === 'build' ? ['log'] : false,
39
+ bundleAnalyze: envMode === 'analyse' ? { openAnalyzer: true } : void 0
40
+ },
41
+ server: {
42
+ base: env.PUBLIC_BASE_URL,
43
+ host: '0.0.0.0',
44
+ port: 3001,
45
+ compress: false,
46
+ proxy: [
47
+ {
48
+ context: [env.PUBLIC_API_HOST],
49
+ target: 'http://127.0.0.1:3000'
50
+ }
51
+ ]
52
+ }
53
+ }
54
+ })
@@ -0,0 +1,54 @@
1
+ import { defineConfig, loadEnv } from '@rsbuild/core'
2
+ import { createPlugins, OUTPUT_ROOT } from './config'
3
+
4
+ export default defineConfig(({ envMode, command }) => {
5
+ const { parsed: env } = loadEnv()
6
+ const { rspackPlugin, plugins } = createPlugins({ command })
7
+ return {
8
+ source: {
9
+ entry: {
10
+ preload: './preload/index.ts'
11
+ }
12
+ },
13
+ resolve: {
14
+ alias: {
15
+ '@': process.cwd()
16
+ }
17
+ },
18
+ output: {
19
+ distPath: { root: OUTPUT_ROOT, js: '' },
20
+ cleanDistPath: false,
21
+ filenameHash: false
22
+ },
23
+ dev: {
24
+ progressBar: command === 'build',
25
+ writeToDisk: true,
26
+ hmr: false,
27
+ liveReload: false
28
+ },
29
+ tools: {
30
+ htmlPlugin: false,
31
+ rspack: {
32
+ target: 'electron-preload',
33
+ plugins: rspackPlugin
34
+ }
35
+ },
36
+ plugins,
37
+ performance: {
38
+ removeConsole: command === 'build' ? ['log'] : false,
39
+ bundleAnalyze: envMode === 'analyse' ? { openAnalyzer: true } : void 0
40
+ },
41
+ server: {
42
+ base: env.PUBLIC_BASE_URL,
43
+ host: '0.0.0.0',
44
+ port: 3002,
45
+ compress: false,
46
+ proxy: [
47
+ {
48
+ context: [env.PUBLIC_API_HOST],
49
+ target: 'http://127.0.0.1:3000'
50
+ }
51
+ ]
52
+ }
53
+ }
54
+ })
@@ -0,0 +1,64 @@
1
+ import path from 'node:path'
2
+ import { defineConfig, loadEnv } from '@rsbuild/core'
3
+ import { pluginVue } from '@rsbuild/plugin-vue'
4
+ import { createChunks } from './createChunks'
5
+ import { createPlugins, OUTPUT_ROOT } from './config'
6
+
7
+ export default defineConfig(({ envMode, command }) => {
8
+ const { parsed: env } = loadEnv()
9
+ const { rspackPlugin, plugins } = createPlugins({ command })
10
+ const resolveRendererPath = (p: string) => path.resolve('renderer', p)
11
+ return {
12
+ html: {
13
+ template: resolveRendererPath('index.html'),
14
+ title: 'Rsbuild + Vue + TS',
15
+ favicon: resolveRendererPath('shared/assets/vue.svg')
16
+ },
17
+ source: {
18
+ entry: {
19
+ index: resolveRendererPath('main.ts')
20
+ }
21
+ },
22
+ resolve: {
23
+ alias: {
24
+ '@': process.cwd()
25
+ }
26
+ },
27
+ output: {
28
+ distPath: { root: `${OUTPUT_ROOT}/renderer` },
29
+ assetPrefix: './',
30
+ cleanDistPath: false
31
+ },
32
+ dev: {
33
+ progressBar: command === 'build'
34
+ },
35
+ tools: {
36
+ rspack: {
37
+ plugins: rspackPlugin
38
+ }
39
+ },
40
+ plugins: [...plugins, pluginVue()],
41
+ performance: {
42
+ removeConsole: command === 'build' ? ['log'] : false,
43
+ chunkSplit: {
44
+ strategy: 'custom',
45
+ splitChunks: {
46
+ minChunks: 1,
47
+ cacheGroups: createChunks([{ libs: ['vue', 'vue-router'], name: 'vue' }])
48
+ }
49
+ },
50
+ bundleAnalyze: envMode === 'analyse' ? { openAnalyzer: true } : void 0
51
+ },
52
+ server: {
53
+ base: env.PUBLIC_BASE_URL,
54
+ host: '0.0.0.0',
55
+ compress: false,
56
+ proxy: [
57
+ {
58
+ context: [env.PUBLIC_API_HOST],
59
+ target: 'http://127.0.0.1:3000'
60
+ }
61
+ ]
62
+ }
63
+ }
64
+ })
@@ -0,0 +1,18 @@
1
+ /// <reference types="@rsbuild/core/types" />
2
+
3
+ declare module '*.vue' {
4
+ import { type DefineComponent } from 'vue'
5
+ const component: DefineComponent<Record<string, any>, Record<string, any>, any>
6
+ export default component
7
+ }
8
+
9
+ interface ImportMetaEnv {
10
+ readonly PUBLIC_BASE_URL: string
11
+ readonly PUBLIC_API_HOST: string
12
+ readonly PUBLIC_ENV_MODE: 'production' | 'development'
13
+ // 更多环境变量...
14
+ }
15
+
16
+ interface ImportMeta {
17
+ readonly env: ImportMetaEnv
18
+ }
@@ -0,0 +1,115 @@
1
+ import eslint from '@eslint/js'
2
+ import globals from 'globals'
3
+ import tseslint from 'typescript-eslint'
4
+ import importPlugin from 'eslint-plugin-import'
5
+ import pluginVue from 'eslint-plugin-vue'
6
+
7
+ const scriptExtensions = ['js', 'jsx', 'mjs', 'cjs', 'ts', 'tsx']
8
+ const files = [...scriptExtensions.map(ext => `**/*.${ext}`), '**/*.vue']
9
+
10
+ export default tseslint.config([
11
+ { ignores: ['**/node_modules/', 'dist/', '.history/', '.vscode'] },
12
+ eslint.configs.recommended,
13
+ importPlugin.flatConfigs.recommended,
14
+ tseslint.configs.recommended,
15
+ pluginVue.configs['flat/recommended'],
16
+ {
17
+ files,
18
+ languageOptions: {
19
+ ecmaVersion: 2018,
20
+ sourceType: 'module',
21
+ parserOptions: {
22
+ ecmaFeatures: {
23
+ jsx: true
24
+ },
25
+ useJSXTextNode: true,
26
+ parser: tseslint.parser
27
+ },
28
+ globals: {
29
+ ...globals.browser,
30
+ ...globals.node
31
+ }
32
+ },
33
+ settings: {
34
+ 'import/resolver': {
35
+ typescript: true,
36
+ node: true
37
+ }
38
+ },
39
+ rules: {
40
+ 'import/export': 'off',
41
+ 'import/namespace': 'off',
42
+ 'import/default': 'off',
43
+ 'import/consistent-type-specifier-style': ['error', 'prefer-inline'],
44
+ 'import/no-duplicates': ['error', { 'prefer-inline': true }],
45
+ 'import/no-named-as-default-member': 'off',
46
+ 'import/no-named-as-default': 'off',
47
+ 'import/order': [
48
+ 'error',
49
+ {
50
+ groups: [
51
+ 'builtin',
52
+ 'external',
53
+ 'internal',
54
+ 'parent',
55
+ 'sibling',
56
+ 'index',
57
+ 'object',
58
+ 'type'
59
+ ],
60
+ pathGroups: [
61
+ { pattern: 'vue', group: 'external', position: 'before' },
62
+ { pattern: 'vue-router', group: 'external', position: 'before' }
63
+ ],
64
+ pathGroupsExcludedImportTypes: ['builtin']
65
+ }
66
+ ],
67
+ 'no-case-declarations': 'off',
68
+ '@typescript-eslint/no-unused-expressions': 'off',
69
+ '@typescript-eslint/no-empty-object-type': 'off',
70
+ '@typescript-eslint/no-var-requires': 0,
71
+ '@typescript-eslint/explicit-function-return-type': 'off',
72
+ '@typescript-eslint/no-explicit-any': 0,
73
+ '@typescript-eslint/no-non-null-assertion': 'off',
74
+ '@typescript-eslint/no-inferrable-types': [
75
+ 'warn',
76
+ {
77
+ ignoreParameters: true
78
+ }
79
+ ],
80
+ '@typescript-eslint/no-unused-vars': [
81
+ 'warn',
82
+ {
83
+ argsIgnorePattern: '^_'
84
+ }
85
+ ],
86
+ '@typescript-eslint/member-delimiter-style': 0,
87
+ '@typescript-eslint/class-name-casing': 0,
88
+ '@typescript-eslint/explicit-module-boundary-types': 'off',
89
+ '@typescript-eslint/ban-ts-comment': 'off',
90
+ '@typescript-eslint/no-empty-interface': 'off',
91
+ '@typescript-eslint/triple-slash-reference': 'off',
92
+ "@typescript-eslint/no-require-imports": 'off',
93
+ 'vue/multi-word-component-names': 0,
94
+ 'vue/html-indent': ['error', 4],
95
+ 'vue/require-default-prop': 'off',
96
+ 'vue/one-component-per-file': 'off',
97
+ 'vue/no-dupe-keys': 'off',
98
+ 'vue/html-self-closing': [
99
+ 'error',
100
+ {
101
+ html: {
102
+ void: 'always',
103
+ normal: 'always',
104
+ component: 'always'
105
+ },
106
+ svg: 'always',
107
+ math: 'always'
108
+ }
109
+ ],
110
+ 'vue/max-attributes-per-line': 'off',
111
+ 'vue/singleline-html-element-content-newline': 'off',
112
+ 'no-constant-condition': 'off'
113
+ }
114
+ }
115
+ ])
@@ -0,0 +1,83 @@
1
+ import path from 'path'
2
+ import { app, BrowserWindow, shell, ipcMain } from 'electron'
3
+ import { resolveHtmlPath } from './tools'
4
+
5
+ let mainWindow: BrowserWindow | null = null
6
+
7
+ ipcMain.on('ipc-example', async (event, arg) => {
8
+ const msgTemplate = (pingPong: string) => `IPC test: ${pingPong}`
9
+ console.log(msgTemplate(arg))
10
+ event.reply('ipc-example', msgTemplate('pong'))
11
+ })
12
+
13
+ const isDebug = process.env.NODE_ENV === 'development' || process.env.DEBUG_PROD === 'true'
14
+
15
+ if (true) {
16
+ require('electron-debug').default()
17
+ }
18
+
19
+ const createWindow = async () => {
20
+ const RESOURCES_PATH = app.isPackaged
21
+ ? path.join(process.resourcesPath, 'assets')
22
+ : path.join(__dirname, '../../assets')
23
+
24
+ const getAssetPath = (...paths: string[]): string => {
25
+ return path.join(RESOURCES_PATH, ...paths)
26
+ }
27
+
28
+ mainWindow = new BrowserWindow({
29
+ show: false,
30
+ width: 1024,
31
+ height: 728,
32
+ icon: getAssetPath('icon.png'),
33
+ webPreferences: {
34
+ preload: path.join(__dirname, '../preload.js')
35
+ }
36
+ })
37
+
38
+ mainWindow.loadURL(resolveHtmlPath('index.html'))
39
+
40
+ mainWindow.on('ready-to-show', () => {
41
+ if (!mainWindow) {
42
+ throw new Error('"mainWindow" is not defined')
43
+ }
44
+ if (process.env.START_MINIMIZED) {
45
+ mainWindow.minimize()
46
+ } else {
47
+ mainWindow.show()
48
+ }
49
+ })
50
+
51
+ mainWindow.on('closed', () => {
52
+ mainWindow = null
53
+ })
54
+
55
+ // Open urls in the user's browser
56
+ mainWindow.webContents.setWindowOpenHandler(edata => {
57
+ shell.openExternal(edata.url)
58
+ return { action: 'deny' }
59
+ })
60
+ }
61
+
62
+ /**
63
+ * Add event listeners...
64
+ */
65
+
66
+ app.on('window-all-closed', () => {
67
+ // Respect the OSX convention of having the application in memory even
68
+ // after all windows have been closed
69
+ if (process.platform !== 'darwin') {
70
+ app.quit()
71
+ }
72
+ })
73
+
74
+ app.whenReady()
75
+ .then(() => {
76
+ createWindow()
77
+ app.on('activate', () => {
78
+ // On macOS it's common to re-create a window in the app when the
79
+ // dock icon is clicked and there are no other windows open.
80
+ if (mainWindow === null) createWindow()
81
+ })
82
+ })
83
+ .catch(console.log)
@@ -0,0 +1,8 @@
1
+ import path from 'path'
2
+
3
+ export function resolveHtmlPath(htmlFileName: string) {
4
+ if (process.env.NODE_ENV === 'development') {
5
+ return `http://localhost:3000`
6
+ }
7
+ return `file://${path.resolve(__dirname, '../renderer/', htmlFileName)}`
8
+ }
@@ -0,0 +1 @@
1
+ export * from './html'
@@ -0,0 +1,87 @@
1
+ {
2
+ "name": "renderer",
3
+ "private": true,
4
+ "version": "0.0.0",
5
+ "main": "dist/main/main.js",
6
+ "scripts": {
7
+ "prepare": "husky",
8
+ "start": "electron .",
9
+ "dev": "pnpm clean && concurrently \"pnpm dev:preload\" \"pnpm dev:renderer\" \"pnpm dev:main\"",
10
+ "dev:renderer": "rsbuild dev -c ./configs/rsbuild.renderer.config.ts",
11
+ "dev:preload": "rsbuild dev -c ./configs/rsbuild.preload.config.ts",
12
+ "dev:main": "rsbuild dev -c ./configs/rsbuild.main.config.ts",
13
+ "build": "pnpm clean && pnpm build:preload && pnpm build:renderer && pnpm build:main",
14
+ "build:renderer": "rsbuild build -c ./configs/rsbuild.renderer.config.ts",
15
+ "build:preload": "rsbuild build -c ./configs/rsbuild.preload.config.ts",
16
+ "build:main": "rsbuild build -c ./configs/rsbuild.main.config.ts",
17
+ "build:analyse": "rsbuild build --env-mode analyse",
18
+ "build:rsdoctor": "cross-env RSDOCTOR=true rsbuild build",
19
+ "package": "rimraf build && electron-builder -c ./build.config.js",
20
+ "clean": "rimraf dist",
21
+ "preview": "rsbuild preview",
22
+ "up:rsbuild": "pnpm up @rsbuild/* -L",
23
+ "format": "prettier -- \"**/*.{vue,ts,js,tsx,jsx,json,css,scss,less}\"",
24
+ "lint": "vue-tsc --noEmit && eslint --no-error-on-unmatched-pattern && stylelint **/*.{css,scss,less}",
25
+ "lint:fix": "eslint --fix && stylelint **/*.{css,scss,less} --fix",
26
+ "cz": "cz",
27
+ "push": "npm run commit && git push",
28
+ "commit": "git add . && npm run cz",
29
+ "up:vite": "pnpm up vite @vitejs/* vite-plugin-* -L"
30
+ },
31
+ "dependencies": {
32
+ "axios": "1.7.9",
33
+ "electron-debug": "4.1.0",
34
+ "es-toolkit": "1.39.8",
35
+ "pinia": "3.0.3",
36
+ "tailwindcss": "4.1.4",
37
+ "type-fest": "4.33.0",
38
+ "vue": "3.5.20",
39
+ "vue-router": "4.5.1"
40
+ },
41
+ "devDependencies": {
42
+ "@commitlint/cli": "17.6.1",
43
+ "@commitlint/config-conventional": "17.6.1",
44
+ "@commitlint/cz-commitlint": "17.5.0",
45
+ "@eslint/js": "9.15.0",
46
+ "@faker-js/faker": "8.4.1",
47
+ "@rsbuild/core": "1.5.10",
48
+ "@rsbuild/plugin-eslint": "1.1.2",
49
+ "@rsbuild/plugin-type-check": "1.2.4",
50
+ "@rsbuild/plugin-vue": "1.1.2",
51
+ "@rsdoctor/rspack-plugin": "1.2.3",
52
+ "@tailwindcss/postcss": "4.1.4",
53
+ "@types/mockjs": "1.0.10",
54
+ "autoprefixer": "10.4.14",
55
+ "commitizen": "4.3.0",
56
+ "concurrently": "9.2.1",
57
+ "cross-env": "7.0.3",
58
+ "cssnano": "6.0.0",
59
+ "electron": "38.1.2",
60
+ "electron-builder": "26.0.12",
61
+ "eslint": "9.17.0",
62
+ "eslint-import-resolver-typescript": "3.7.0",
63
+ "eslint-plugin-import": "2.31.0",
64
+ "eslint-plugin-vue": "9.32.0",
65
+ "globals": "15.12.0",
66
+ "husky": "9.1.6",
67
+ "inquirer": "8.1.2",
68
+ "postcss": "8.4.38",
69
+ "postcss-html": "1.8.0",
70
+ "postcss-import": "16.1.0",
71
+ "postcss-nesting": "12.1.1",
72
+ "prettier": "3.2.5",
73
+ "rimraf": "6.0.1",
74
+ "rollup-plugin-visualizer": "5.12.0",
75
+ "stylelint": "16.10.0",
76
+ "stylelint-config-standard-scss": "13.1.0",
77
+ "stylelint-webpack-plugin": "5.0.0",
78
+ "typescript": "5.8.2",
79
+ "typescript-eslint": "8.15.0",
80
+ "vue-tsc": "3.0.6"
81
+ },
82
+ "config": {
83
+ "commitizen": {
84
+ "path": "@commitlint/cz-commitlint"
85
+ }
86
+ }
87
+ }