alex8088 / electron-vite

Next generation Electron build tooling based on Vite 新一代 Electron 开发构建工具,支持源代码保护
https://electron-vite.org
MIT License
3.35k stars 145 forks source link

Unclear whether electron-vite works with Electron Forge #167

Closed jjeff closed 1 year ago

jjeff commented 1 year ago

Describe the bug

Does electron-vite work with Electron Forge? I'm guessing it could work, but I'm not finding any mention of Electron Forge in the documentation. It would be great to mention whether or not it works, how it might work, and have some examples or pointers.

I am attempting to move from Webpack to Vite in my (very complicated) Electron Forge app. I'd rather change just one thing at a time, so I don't want to move to Electron Builder now. But if it does work with Electron Forge, I'd be happy to provide some documentation and/or examples once I get it working.

Electron-Vite Version

n/a

Electron Version

n/a

Vite Version

n/a

Validations

alex8088 commented 1 year ago

Yes it works with Electron Forge too.

  1. create a forge.config.cjs file with the fllowing lines:
// forge.config.cjs
module.exports = {
  packagerConfig: {
    ignore: [
      /^\/src/,
      /(.eslintrc.json)|(.gitignore)|(electron.vite.config.ts)|(forge.config.cjs)|(tsconfig.*)/,
    ],
  },
  rebuildConfig: {},
  makers: [
    {
      name: '@electron-forge/maker-squirrel',
      config: {},
    },
    {
      name: '@electron-forge/maker-zip',
      platforms: ['darwin'],
    },
    {
      name: '@electron-forge/maker-deb',
      config: {},
    },
    {
      name: '@electron-forge/maker-rpm',
      config: {},
    },
  ],
};
  1. add scripts and deps
 "scripts": {
    "package": "electron-vite build && electron-forge package",
    "make ": "electron-vite build && electron-forge make"
 },
"devDependencies": {
    "@electron-forge/cli": "^6.1.1",
    "@electron-forge/maker-deb": "^6.1.1",
    "@electron-forge/maker-rpm": "^6.1.1",
    "@electron-forge/maker-squirrel": "^6.1.1",
    "@electron-forge/maker-zip": "^6.1.1",
  }
alex8088 commented 1 year ago

More detail: https://electron-vite.org/guide/distribution.html#distributing-apps-with-electron-forge

felipecrs commented 6 months ago

Is it possible to have electron.forge in ts extension instead? electron-vite would need to compile it before invoking electron forge.

felipecrs commented 6 months ago

Here's one example:

import MakerSquirrel from "@electron-forge/maker-squirrel";
import type { ForgeConfig } from "@electron-forge/shared-types";
import path from "node:path";

const getAppIcon = () => {
  const iconExtension =
    process.platform === "win32"
      ? "ico"
      : process.platform === "darwin"
      ? "icns"
      : "png";

  return path.resolve(
    __dirname,
    `./resources/appicons/${iconExtension}/icon.${iconExtension}`
  );
};

const config: ForgeConfig = {
  packagerConfig: {
    icon: getAppIcon(),
    ignore: [
      /^\/(src)|(tools)|(.github)|(.vscode)/,
      /\/(.eslintrc.json)|(.gitignore)|(.gitattributes)|(electron.vite.config.ts)|(forge.config.ts)|(tsconfig.json)|(bindl.config.js)|(bindl.config.js)|(README.md)$/,
    ],
    extendInfo: {
      LSUIElement: true,
    },
  },
  rebuildConfig: {},
  makers: [
    new MakerSquirrel({
      name: "clipboard_sync",
      setupIcon: getAppIcon(),
      iconUrl: getAppIcon(),
    }),
  ],
};

export default config;