* WIP: enable build releases Will eventually fix #3528 * Build on all branches * WIP: electron-forge publish to gcs * WIP env var * WIP windows * WIP checkout in publish * Back to matrix for build-apps and upstream wasm build * WIP * WIP * WIP * WIP * WIP * WIP * WIP clean up out upload with all dry runs * WIP macos * Clean up * Add update-electron-app * Bump version down to 0.24.11 * Explicit NODE_ENV=production * A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest) * A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest) * Push dummy version 0.99.99 * Undo * A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest) * Trigger CI * Lint * Experiment with DMG and MSI * Split up artifacts * Executable name to Zoo Modeling App * Linux kebab-case exe, autoUpdate on wix * Experiment with electron-builder * WIP * fail-fast false * tronb:vite * DMG and NSIS * Typo * Disable updater for electron-builder tests, quick fix * WIP macOS sign and notarize * WIP Win signing * CSC_FOR_PULL_REQUEST * Comment out signingHashAlgorithms * APPLE_APP_SPECIFIC_PASSWORD and move scripts * notarize: true and change script link * mac.notarize.teamid * Clean up and first steps on auto updater * Lint * Add logs * Work on nsis config * More extensive configs * Clean up * Test push updater * Push again; Fix lint * Bump down to 0.24.11 to test, disable publish * WIP mac updater * Back to .12 to push zips * Back to .11 to test * Back to .12 to push to same dir * Fix windows and names * Back to .11 to test, no publish * A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest) * Push again .12 * A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest) * Add publisherName as in certificate * Back to 11 build * Add msi target * MSI params * perMarchine: false * .12 msi push * WIP tauri bundle generation (macOS) * Typo * Universal build mac * Test last_update tauri gen for macOS * VERSION fix * Add v to VERSION * Add v to VERSION part 2 * Fix tar * WIP windows updater * WIP windows * Change Compress-Archive to 7z on Windows * 7z change * Fix flag * -mm Deflate * -mm Copy and version .99 * perMachine true * perMachine true * Manual autoUpdater.quitAndInstall * Test NSIS for tauri transition * WIP * No more universal for mac, last_download.json endpoint * Typo in json * Tweaks * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest) * Fix typo in download.json * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest) * Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest)" This reverts commit0d6d67ec2c. * Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest)" This reverts commitb01bc589ab. * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest) * Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest)" This reverts commit5deff7614f. * Fix tauri update json for universal to arch specified * Fix tauri update json for universal to arch specified part 2 * Fix tauri update json for universal to arch specified part 3 * Back to checkUpdateAndNotify, frames on window * Clean up * Default prod env values * CI clean up * More clean up * Override if forge env not set * Make basic-sketch test more robust * Fix env vars set --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: 49lf <ircsurfer33@gmail.com>
		
			
				
	
	
		
			115 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { builtinModules } from 'node:module'
 | 
						|
import type { AddressInfo } from 'node:net'
 | 
						|
import type { ConfigEnv, Plugin, UserConfig } from 'vite'
 | 
						|
import pkg from './package.json'
 | 
						|
 | 
						|
export const builtins = [
 | 
						|
  'electron',
 | 
						|
  ...builtinModules.map((m) => [m, `node:${m}`]).flat(),
 | 
						|
]
 | 
						|
 | 
						|
export const external = [
 | 
						|
  ...builtins,
 | 
						|
  ...Object.keys(
 | 
						|
    'dependencies' in pkg ? (pkg.dependencies as Record<string, unknown>) : {}
 | 
						|
  ),
 | 
						|
]
 | 
						|
 | 
						|
export function getBuildConfig(env: ConfigEnv<'build'>): UserConfig {
 | 
						|
  const { root, mode, command } = env
 | 
						|
 | 
						|
  return {
 | 
						|
    root,
 | 
						|
    mode,
 | 
						|
    build: {
 | 
						|
      // Prevent multiple builds from interfering with each other.
 | 
						|
      emptyOutDir: false,
 | 
						|
      // 🚧 Multiple builds may conflict.
 | 
						|
      outDir: '.vite/build',
 | 
						|
      watch: command === 'serve' ? {} : null,
 | 
						|
      minify: command === 'build',
 | 
						|
    },
 | 
						|
    clearScreen: false,
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
export function getDefineKeys(names: string[]) {
 | 
						|
  const define: { [name: string]: VitePluginRuntimeKeys } = {}
 | 
						|
 | 
						|
  return names.reduce((acc, name) => {
 | 
						|
    const NAME = name.toUpperCase()
 | 
						|
    const keys: VitePluginRuntimeKeys = {
 | 
						|
      VITE_DEV_SERVER_URL: `${NAME}_VITE_DEV_SERVER_URL`,
 | 
						|
      VITE_NAME: `${NAME}_VITE_NAME`,
 | 
						|
    }
 | 
						|
 | 
						|
    return { ...acc, [name]: keys }
 | 
						|
  }, define)
 | 
						|
}
 | 
						|
 | 
						|
export function getBuildDefine(env: ConfigEnv<'build'>) {
 | 
						|
  const { command, forgeConfig } = env
 | 
						|
  const renderer = (forgeConfig && forgeConfig.renderer) ?? [
 | 
						|
    {
 | 
						|
      name: 'main_window',
 | 
						|
      config: 'vite.renderer.config.ts',
 | 
						|
    },
 | 
						|
  ]
 | 
						|
  const names = renderer
 | 
						|
    .filter(({ name }) => name != null)
 | 
						|
    .map(({ name }) => name!)
 | 
						|
  const defineKeys = getDefineKeys(names)
 | 
						|
  const define = Object.entries(defineKeys).reduce((acc, [name, keys]) => {
 | 
						|
    const { VITE_DEV_SERVER_URL, VITE_NAME } = keys
 | 
						|
    const def = {
 | 
						|
      [VITE_DEV_SERVER_URL]:
 | 
						|
        command === 'serve'
 | 
						|
          ? JSON.stringify(process.env[VITE_DEV_SERVER_URL])
 | 
						|
          : undefined,
 | 
						|
      [VITE_NAME]: JSON.stringify(name),
 | 
						|
    }
 | 
						|
    return { ...acc, ...def }
 | 
						|
  }, {} as Record<string, any>)
 | 
						|
 | 
						|
  return define
 | 
						|
}
 | 
						|
 | 
						|
export function pluginExposeRenderer(name: string): Plugin {
 | 
						|
  const { VITE_DEV_SERVER_URL } = getDefineKeys([name])[name]
 | 
						|
 | 
						|
  return {
 | 
						|
    name: '@electron-forge/plugin-vite:expose-renderer',
 | 
						|
    configureServer(server) {
 | 
						|
      process.viteDevServers ??= {}
 | 
						|
      // Expose server for preload scripts hot reload.
 | 
						|
      process.viteDevServers[name] = server
 | 
						|
 | 
						|
      server.httpServer?.once('listening', () => {
 | 
						|
        const addressInfo = server.httpServer!.address() as AddressInfo
 | 
						|
        // Expose env constant for main process use.
 | 
						|
        process.env[
 | 
						|
          VITE_DEV_SERVER_URL
 | 
						|
        ] = `http://localhost:${addressInfo?.port}`
 | 
						|
      })
 | 
						|
    },
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
export function pluginHotRestart(command: 'reload' | 'restart'): Plugin {
 | 
						|
  return {
 | 
						|
    name: '@electron-forge/plugin-vite:hot-restart',
 | 
						|
    closeBundle() {
 | 
						|
      if (command === 'reload') {
 | 
						|
        for (const server of Object.values(process.viteDevServers)) {
 | 
						|
          // Preload scripts hot reload.
 | 
						|
          server.ws.send({ type: 'full-reload' })
 | 
						|
        }
 | 
						|
      } else {
 | 
						|
        // Main process hot restart.
 | 
						|
        // https://github.com/electron/forge/blob/v7.2.0/packages/api/core/src/api/start.ts#L216-L223
 | 
						|
        process.stdin.emit('data', 'rs')
 | 
						|
      }
 | 
						|
    },
 | 
						|
  }
 | 
						|
}
 |