forge.config.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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 { MakerDeb } from "@electron-forge/maker-deb";
  5. import { MakerRpm } from "@electron-forge/maker-rpm";
  6. import { MakerDMG } from "@electron-forge/maker-dmg";
  7. import { WebpackPlugin } from "@electron-forge/plugin-webpack";
  8. import { mainConfig } from "./config/webpack.main.config";
  9. import { rendererConfig } from "./config/webpack.renderer.config";
  10. import path from "path";
  11. const config: ForgeConfig = {
  12. packagerConfig: {
  13. appBundleId: "fun.upup.musicfree",
  14. icon: path.resolve(__dirname, "res/logo"),
  15. executableName: "MusicFree",
  16. extraResource: [
  17. path.resolve(__dirname, 'res')
  18. ],
  19. },
  20. rebuildConfig: {},
  21. makers: [
  22. // new MakerSquirrel({
  23. // exe: "MusicFree",
  24. // setupIcon: path.resolve(__dirname, "resources/logo.ico"),
  25. // setupMsi: "MusicFreeInstaller",
  26. // }),
  27. new MakerZIP({}, ["darwin"]),
  28. new MakerDMG({
  29. // background
  30. format: 'ULFO'
  31. }, ['darwin']),
  32. // new MakerRpm({}),
  33. new MakerDeb({
  34. options: {
  35. name: "MusicFree",
  36. bin: "MusicFree"
  37. }
  38. }),
  39. ],
  40. plugins: [
  41. new WebpackPlugin({
  42. devContentSecurityPolicy: `default-src * self blob: data: gap: file:; style-src * self 'unsafe-inline' blob: data: gap: file:; script-src * 'self' 'unsafe-eval' 'unsafe-inline' blob: data: gap: file:; object-src * 'self' blob: data: gap:; img-src * self 'unsafe-inline' blob: data: gap: file:; connect-src self * 'unsafe-inline' blob: data: gap:; frame-src * self blob: data: gap:;`,
  43. mainConfig,
  44. renderer: {
  45. config: rendererConfig,
  46. entryPoints: [
  47. {
  48. html: "./src/renderer/document/index.html",
  49. js: "./src/renderer/document/index.tsx",
  50. name: "main_window",
  51. preload: {
  52. js: "./src/preload/index.ts",
  53. },
  54. },
  55. {
  56. html: "./src/renderer-lrc/document/index.html",
  57. js: "./src/renderer-lrc/document/index.tsx",
  58. name: "lrc_window",
  59. preload: {
  60. js: "./src/preload/extension.ts",
  61. },
  62. },
  63. /** webworkers */
  64. {
  65. js: "./src/webworkers/downloader.ts",
  66. name: 'worker_downloader',
  67. nodeIntegration: true
  68. },
  69. {
  70. js: "./src/webworkers/local-file-watcher.ts",
  71. name: 'local_file_watcher',
  72. nodeIntegration: true
  73. }
  74. ],
  75. },
  76. }),
  77. {
  78. name: '@timfish/forge-externals-plugin',
  79. config: {
  80. externals: ['sharp'],
  81. includeDeps: true
  82. }
  83. }
  84. ],
  85. };
  86. export default config;