vite-plugin-electron icon indicating copy to clipboard operation
vite-plugin-electron copied to clipboard

如何使用vite创建2个html页面?

Open zzxdt opened this issue 1 year ago • 1 comments

结合了插件 配置vite成这样: import { fileURLToPath } from 'url' import { defineConfig, loadEnv } from 'vite' import ElectronPlugin, { ElectronOptions } from 'vite-plugin-electron' import RendererPlugin from 'vite-plugin-electron-renderer'

import VuetifyPlugin from 'vite-plugin-vuetify' import VueJsx from '@vitejs/plugin-vue-jsx' import Vue from '@vitejs/plugin-vue' import { rmSync } from 'fs' import { resolve, dirname } from 'path' import { builtinModules } from 'module'

const isDevEnv = process.env.NODE_ENV === 'development'

export default defineConfig(({ mode }) => { process.env = { ...(isDevEnv ? { ELECTRON_ENABLE_LOGGING: 'true' } : {}), ...process.env, ...loadEnv(mode, process.cwd()) }

rmSync('dist', { recursive: true, force: true })

const electronPluginConfigs: ElectronOptions[] = [ { entry: '../main/index.ts', onstart({ startup }) { startup() }, vite: { build: { assetsDir: '.', outDir: 'dist/main', rollupOptions: { plugins: [ require('@rollup/plugin-alias')({ entries: [{ find: '@', replacement: resolve(__dirname, 'src') }] }) ], external: ['electron', ...builtinModules, 'koffi'] }, } } }, { entry: '../preload/index.ts', onstart({ reload }) { reload() }, vite: { resolve: { alias: { '@': resolve(dirname(fileURLToPath(import.meta.url)), 'src') } }, build: { outDir: 'dist/preload' } } } ]

if (isDevEnv) { electronPluginConfigs.push({ entry: 'src/main/index.dev.ts', vite: { build: { outDir: 'dist/main' } } }) }

return { define: { VUE_I18N_FULL_INSTALL: true, VUE_I18N_LEGACY_API: false, INTLIFY_PROD_DEVTOOLS: false }, resolve: { extensions: ['.mjs', '.js', '.ts', '.vue', '.json', '.scss'], alias: { '@': resolve(dirname(fileURLToPath(import.meta.url)), 'src') } }, base: './', root: resolve('./src/renderer'), publicDir: resolve('./src/renderer/public'), clearScreen: false, build: { sourcemap: isDevEnv, minify: !isDevEnv, outDir: resolve('./dist'), rollupOptions: { input: { main: resolve('index.html'), translator: resolve('../translator/index.html') } } }, plugins: [ Vue(), VueJsx(), // Docs: https://github.com/vuetifyjs/vuetify-loader VuetifyPlugin({ autoImport: true }), // Docs: https://github.com/gxmari007/vite-plugin-eslint // Docs: https://github.com/electron-vite/vite-plugin-electron ElectronPlugin(electronPluginConfigs), RendererPlugin() ] } })但是发现使用不了input属性,使用报错:Could not resolve entry module "../translator/index.html". [vite-plugin-electron] Could not resolve entry module "../translator/index.html". error during build: RollupError: Could not resolve entry module "../translator/index.html". at error (file:///D:/work/ChatDesk/YuKigal/node_modules/rollup/dist/es/shared/parseAst.js:337:30) at ModuleLoader.loadEntryModule (file:///D:/work/ChatDesk/YuKigal/node_modules/rollup/dist/es/shared/node-entry.js:18021:20) at async Promise.all (index 1) electron版本:28.2.1 "vite-plugin-electron": "^0.28.7",

zzxdt avatar Apr 29 '24 12:04 zzxdt

贴的代码还是建议md格式化一下,都看不清。 多页使用vite-plugin-multiple,在viteplugins里边配置

  multiple([
      {
        name: 'app-two',
        config: 'vite.app-two.config.ts'
      }
    ])

vite.app-two.config.ts

    build: {
      outDir: 'dist',
      emptyOutDir: false,
      rollupOptions: {
        input: path.join(__dirname, 'two-index.html')
      }
    }

shuyuTech avatar Sep 18 '25 08:09 shuyuTech