import { InlineConfig, defineConfig } from 'vite'
import { build } from "vite";
import cp from 'vite-plugin-cp';
import pkg from './package.json' assert { type: 'json' };
const externalAll = ["electron", "fs/promises", "fs", "url", "util", "path", /node:/, ...Object.keys(pkg.dependencies)];
console.log(externalAll);
function createConfig(library: string, path: string, emptyOutDir: boolean): InlineConfig {
  return {
    configFile: false,
    build: {
      emptyOutDir: emptyOutDir,
      lib: {
        formats: ["cjs"],
        entry: { [library]: path }
      },
      rollupOptions: {
        external: externalAll,
      }
    }
  };
}
export function BuildPlugin() {
  build(createConfig("main", "src/main/main.ts", false));
  build(createConfig("preload", "src/preload.ts", false));
}

BuildPlugin();

export default defineConfig({
  build: {
    emptyOutDir: false,
    lib: {
      formats: ['es'],
      entry: { ["renderer"]: `src/renderer.ts` },
    },
    rollupOptions: {
      external: externalAll
    }
  },
  plugins: [cp({ targets: [{ src: './package.json', dest: 'dist' }, { src: './manifest.json', dest: 'dist' }] })]
})