{"id":15887865,"url":"https://github.com/byslin/umi-plugin-electron-builder","last_synced_at":"2025-04-09T18:16:56.017Z","repository":{"id":41060558,"uuid":"244690363","full_name":"BySlin/umi-plugin-electron-builder","owner":"BySlin","description":"umi的electron插件","archived":false,"fork":false,"pushed_at":"2023-07-29T13:17:07.000Z","size":856,"stargazers_count":158,"open_issues_count":0,"forks_count":25,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-09T18:16:50.544Z","etag":null,"topics":["electron","electron-builder","umi","umi-electron","umi-plugin","umi3","umi4","umijs"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BySlin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-03T16:46:54.000Z","updated_at":"2024-12-28T17:32:09.000Z","dependencies_parsed_at":"2024-10-27T23:45:15.137Z","dependency_job_id":"edefeaf7-bf43-408a-9747-009bfd7a807a","html_url":"https://github.com/BySlin/umi-plugin-electron-builder","commit_stats":{"total_commits":152,"total_committers":3,"mean_commits":"50.666666666666664","dds":0.05921052631578949,"last_synced_commit":"4acaa7c7c78792c5f115c6e9dcd4afa4edcc4c85"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BySlin%2Fumi-plugin-electron-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BySlin%2Fumi-plugin-electron-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BySlin%2Fumi-plugin-electron-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BySlin%2Fumi-plugin-electron-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BySlin","download_url":"https://codeload.github.com/BySlin/umi-plugin-electron-builder/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248085323,"owners_count":21045139,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electron","electron-builder","umi","umi-electron","umi-plugin","umi3","umi4","umijs"],"created_at":"2024-10-06T06:05:29.432Z","updated_at":"2025-04-09T18:16:55.959Z","avatar_url":"https://github.com/BySlin.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# umi-plugin-electron-builder\n\n本插件提供基于umijs的electron的开发及打包，无需修改项目结构，支持混合项目结构和main+renderer项目结构，仅支持 umijs4\n\n混合项目结构示例 \u003ca href=\"https://github.com/BySlin/umi-plugin-electron-builder/tree/main/examples/demo\"\u003e点此访问\u003c/a\u003e\n\nmain+renderer项目结构示例 \u003ca href=\"https://github.com/BySlin/umi-plugin-electron-builder/tree/main/examples/main%2Brenderer\"\u003e点此访问\u003c/a\u003e\n\n使用混合项目结构时，插件可自动生成项目文件，使用main+renderer项目结构时，请参考示例修改目录结构\n\n\u003ca href=\"https://www.npmjs.com/package/umi-plugin-electron-builder\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/umi-plugin-electron-builder.svg?sanitize=true\" alt=\"Version\"\u003e\u003c/a\u003e\n\n[更新日志](https://github.com/BySlin/umi-plugin-electron-builder/blob/main/CHANGELOG.md)\n\n[umi3请使用2.x版本插件，点此访问](https://github.com/BySlin/umi-plugin-electron-builder/tree/2.x)\n\n## 安装\n\n```shell\n$ yarn add umi-plugin-electron-builder --dev\n```\n\numi4需要手动启用插件\n\n```typescript\nimport { defineConfig } from \"umi\";\n\nexport default defineConfig({\n  npmClient: \"yarn\",\n  plugins: [\"umi-plugin-electron-builder\"],\n});\n```\n\n配置完成之后，执行\n\n```shell\n$ yarn postinstall\n```\n\n执行以下指令，生成主进程文件 src/main/index.ts\n\n```shell\n$ yarn electron:init\n```\n\n默认安装最新版本的 electron\n\n自动在 package.json 增加以下配置，使用@umijs/max时，请将以下命令中的umi修改为max\n\n```json5\n{\n  scripts: {\n    'rebuild-deps': 'electron-builder install-app-deps',\n    'electron:init': 'umi electron init',\n    'electron:dev': 'umi dev electron',\n    'electron:build:win': 'umi build electron --win',\n    'electron:build:mac': 'umi build electron --mac',\n    'electron:build:linux': 'umi build electron --linux',\n  },\n  //这里需要修改成你自己的应用名称\n  name: 'electron_builder_app',\n  version: '0.0.1',\n}\n```\n\n### Electron 版本降级\n\n你可以手动将 package.json 中的 electron 修改至低版本，插件与 electron 版本无关\n\n### 开发\n\n```\n$ yarn electron:dev\n```\n\n### 调试主进程（VS Code）\n\n```json5\n{\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    {\n      \"type\": \"node-terminal\",\n      \"request\": \"launch\",\n      \"name\": \"debug electron:dev\",\n      \"command\": \"yarn electron:dev\",\n      \"skipFiles\": [\n        \"\u003cnode_internals\u003e/**\"\n      ],\n      \"sourceMapPathOverrides\": {\n        \"webpack://main/./*\": \"${workspaceFolder}/src/main/*\"\n      },\n      \"resolveSourceMapLocations\": [\n        \"${workspaceFolder}/src/.umi/electron/**\",\n        \"${workspaceFolder}/src/renderer/.umi/electron/**\"\n      ],\n      \"autoAttachChildProcesses\": true\n    }\n  ]\n}\n```\n\n### 打包\n\n打包路径不能有中文，electron-builder不能跨平台打包，请在对应系统上打包\n\n```\n//windows\n$ umi build electron --win\n//mac\n$ umi build electron --mac\n//linux\n$ umi build electron --linux\n//按平台打包\n$ umi build electron --win --ia32    //32位\n$ umi build electron --win --x64     //64位\n$ umi build electron --win --armv7l  //arm32位\n$ umi build electron --win --arm64   //arm64位\n```\n\n### 使用 node 环境下运行的模块\n\n例：使用 serialport 插件\n\n```\n$ yarn add serialport @types/serialport\n```\n\n### 配置 .umirc.ts\n\n```typescript\nimport Config from '@umijs/bundler-webpack/compiled/webpack-5-chain';\nimport { defineConfig } from 'umi';\nimport { InlineConfig } from 'vite';\n\nexport default defineConfig({\n  electronBuilder: {\n    //可选参数\n    buildType: 'vite', //webpack或vite，当编译出现问题，可尝试切换为webpack\n    //并行构建，默认关闭，如开启出现问题，请关闭此功能\n    parallelBuild: false, //并行构建，开启时主进程和渲染进程同时编译\n    mainSrc: 'src/main', //默认主进程目录\n    preloadSrc: 'src/preload', //默认preload目录，可选，不需要可删除\n    routerMode: 'hash', //路由 hash或memory,仅electron下有效，推荐使用hash\n    outputDir: 'dist_electron', //默认打包目录\n    externals: ['serialport'], //node原生模块配置，打包之后找不到包也需要配置在这里\n    rendererTarget: 'web', //构建目标electron-renderer或web，使用上下文隔离时，必须设置为web\n    debugPort: 5858, //主进程调试端口\n    //2.1.0新增\n    preloadEntry: {\n      //默认值 key为preload文件名 值为preload输出文件名\n      //输出文件名不能为main.js会和主进程文件名冲突\n      //文件名为preload目录下多文件名\n      //多级目录时key为xxxx/xxxx.ts\n      //使用时输出文件会和主进程在同一目录下 preload: path.join(__dirname, 'preload.js')\n      'index.ts': 'preload.js',\n    },\n    viteConfig(config: InlineConfig, type: \"main\" | \"preload\") {\n      //主进程Vite配置\n      //配置参考 https://vitejs.dev/config/\n      //ConfigType分为main和preload可分别配置\n    },\n    //通过 webpack-chain 的 API 修改 webpack 配置。\n    mainWebpackChain(config: Config, type: \"main\" | \"preload\") {\n      //ConfigType分为main和preload可分别配置\n      // if (type === 'main') {}\n      // if (type === 'preload') {}\n    },\n    //2.1.10新增 开启自定义主进程日志时\n    logProcess(log: string, type: \"normal\" | \"error\") {\n      if (type === 'normal') {\n        console.log(log);\n      } else if (type === 'error') {\n        console.error(log);\n      }\n    },\n    builderOptions: {\n      //配置参考 https://www.electron.build/configuration/configuration\n      appId: 'com.test.test',\n      productName: '测试',\n      publish: [\n        {\n          provider: 'generic',\n          url: 'http://localhost/test',\n        },\n      ],\n    }, //electronBuilder参数\n  },\n  routes: [{ path: '/', component: '@/pages/index' }],\n});\n```\n\n在 Electron10 以上使用[contextIsolation](https://www.electronjs.org/docs/tutorial/context-isolation)时 rendererTarget 需要设置成\nweb\n\nbuilderOptions[参考 Electron Builder](https://www.electron.build/configuration/configuration)\n\n### 已知问题\n\nesbuild 暂不支持 typescript decorator metadata\n\nVite 与 typeorm 冲突，typeorm 在主进程无法使用\n\n相关 Issue https://github.com/evanw/esbuild/issues/257\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbyslin%2Fumi-plugin-electron-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbyslin%2Fumi-plugin-electron-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbyslin%2Fumi-plugin-electron-builder/lists"}