forge.config.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import type { ForgeConfig } from '@electron-forge/shared-types'
  2. import { MakerSquirrel } from '@electron-forge/maker-squirrel'
  3. import { MakerZIP } from '@electron-forge/maker-zip'
  4. import { PublisherGithub } from '@electron-forge/publisher-github'
  5. import { AutoUnpackNativesPlugin } from '@electron-forge/plugin-auto-unpack-natives'
  6. import { WebpackPlugin } from '@electron-forge/plugin-webpack'
  7. import * as path from 'path'
  8. import * as fs from 'fs'
  9. import { mainConfig } from './webpack.main.config'
  10. import { rendererConfig } from './webpack.renderer.config'
  11. const packageJson = JSON.parse(fs.readFileSync(path.resolve(__dirname, './package.json'), 'utf8'))
  12. const config: ForgeConfig = {
  13. packagerConfig: {
  14. appVersion: process.env.VERSION || packageJson.version,
  15. asar: true,
  16. icon: './assets/icon.icns',
  17. extraResource: [
  18. '../ollama',
  19. path.join(__dirname, './assets/ollama_icon_16x16Template.png'),
  20. path.join(__dirname, './assets/ollama_icon_16x16Template@2x.png'),
  21. ...(process.platform === 'darwin' ? ['../ggml-metal.metal'] : []),
  22. ],
  23. ...(process.env.SIGN
  24. ? {
  25. osxSign: {
  26. identity: process.env.APPLE_IDENTITY,
  27. },
  28. osxNotarize: {
  29. tool: 'notarytool',
  30. appleId: process.env.APPLE_ID || '',
  31. appleIdPassword: process.env.APPLE_PASSWORD || '',
  32. teamId: process.env.APPLE_TEAM_ID || '',
  33. },
  34. }
  35. : {}),
  36. },
  37. rebuildConfig: {},
  38. makers: [new MakerSquirrel({}), new MakerZIP({}, ['darwin'])],
  39. publishers: [
  40. new PublisherGithub({
  41. repository: {
  42. name: 'ollama',
  43. owner: 'jmorganca',
  44. },
  45. draft: false,
  46. prerelease: true,
  47. }),
  48. ],
  49. plugins: [
  50. new AutoUnpackNativesPlugin({}),
  51. new WebpackPlugin({
  52. mainConfig,
  53. devContentSecurityPolicy: `default-src * 'unsafe-eval' 'unsafe-inline'`,
  54. renderer: {
  55. config: rendererConfig,
  56. nodeIntegration: true,
  57. entryPoints: [
  58. {
  59. html: './src/index.html',
  60. js: './src/renderer.tsx',
  61. name: 'main_window',
  62. preload: {
  63. js: './src/preload.ts',
  64. },
  65. },
  66. ],
  67. },
  68. }),
  69. ],
  70. }
  71. export default config