diff --git a/electron.vite.config.ts b/electron.vite.config.ts index 79f98a37..e11f4426 100644 --- a/electron.vite.config.ts +++ b/electron.vite.config.ts @@ -3,6 +3,7 @@ import { externalizeDepsPlugin, UserConfig } from 'electron-vite'; import { resolve } from 'path'; import conditionalImportPlugin from 'vite-plugin-conditional-import'; import dynamicImportPlugin from 'vite-plugin-dynamic-import'; +import { ViteEjsPlugin } from 'vite-plugin-ejs'; const currentOSEnv = process.platform; @@ -49,7 +50,7 @@ const config: UserConfig = { localsConvention: 'camelCase', }, }, - plugins: [react()], + plugins: [react(), ViteEjsPlugin({ web: false })], resolve: { alias: { '/@/i18n': resolve('src/i18n'), diff --git a/package.json b/package.json index 9236e9c1..62486c74 100644 --- a/package.json +++ b/package.json @@ -20,9 +20,10 @@ }, "main": "./out/main/index.js", "scripts": { - "build": "pnpm run typecheck && pnpm run build:app && pnpm run build:remote", - "build:app": "electron-vite build", + "build": "pnpm run typecheck && pnpm run build:electron && pnpm run build:remote", + "build:electron": "electron-vite build", "build:remote": "vite build --config remote.vite.config.ts", + "build:web": "vite build --config web.vite.config.ts", "dev": "electron-vite dev", "dev:watch": "electron-vite dev --watch", "format": "prettier --write .", diff --git a/src/renderer/index.html b/src/renderer/index.html index 1a446c50..e76f3922 100644 --- a/src/renderer/index.html +++ b/src/renderer/index.html @@ -6,7 +6,10 @@ Feishin - + <% if (web) { %> + + + <% } %> diff --git a/web.vite.config.ts b/web.vite.config.ts new file mode 100644 index 00000000..f9d0be17 --- /dev/null +++ b/web.vite.config.ts @@ -0,0 +1,43 @@ +import react from '@vitejs/plugin-react'; +import path from 'path'; +import { defineConfig, normalizePath } from 'vite'; +import { ViteEjsPlugin } from 'vite-plugin-ejs'; + +export default defineConfig({ + base: './', + build: { + emptyOutDir: true, + outDir: path.resolve(__dirname, './out/web'), + rollupOptions: { + input: { + favicon: normalizePath(path.resolve(__dirname, './assets/icons/favicon.ico')), + index: normalizePath(path.resolve(__dirname, './src/renderer/index.html')), + }, + output: { + assetFileNames: 'assets/[name].[ext]', + }, + }, + }, + css: { + modules: { + generateScopedName: '[name]__[local]__[hash:base64:5]', + localsConvention: 'camelCase', + }, + }, + plugins: [ + react(), + ViteEjsPlugin({ + root: normalizePath(path.resolve(__dirname, './src/renderer')), + web: true, + }), + ], + resolve: { + alias: { + '/@/i18n': path.resolve(__dirname, './src/i18n'), + '/@/remote': path.resolve(__dirname, './src/remote'), + '/@/renderer': path.resolve(__dirname, './src/renderer'), + '/@/shared': path.resolve(__dirname, './src/shared'), + }, + }, + root: path.resolve(__dirname, './src/renderer'), +});