# electron-forge-demo **Repository Path**: lianggit/electron-forge-demo ## Basic Information - **Project Name**: electron-forge-demo - **Description**: Electron-forge使用实战 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-01-04 - **Last Updated**: 2024-11-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: Vue, Nodejs ## README # Electron-forge使用实战 ## 1 准备工作 + nodejs环境(此处不多说) + 代理镜像(由于electron相关下载比较慢,通过使用国内代理提速) ```she npm set ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/ ``` ## 2 安装及打包 ### 2.1 全是安装electron-forge ```shell npm install -g electron-forge ``` ![image-20211231175625233](Electron-forge使用实战.assets/image-20211231175625233.png) ### 2.2 初始化项目(会创建demo文件夹) ```shell electron-forge init demo ``` ```json { "name": "demo", "productName": "demo", "version": "1.0.0", "description": "My Electron application description", "main": "src/index.js", "scripts": { "start": "electron-forge start", "package": "electron-forge package", "make": "electron-forge make", "publish": "electron-forge publish", "lint": "echo \"No linting configured\"" }, "keywords": [], "author": { "name": "hank", "email": "12630335@qq.com" }, "license": "MIT", "config": { "forge": { "packagerConfig": { }, "makers": [ { "name": "@electron-forge/maker-squirrel", "config": { "name": "xiaobai_hr" } }, { "name": "@electron-forge/maker-zip", "platforms": [ "darwin" ] }, { "name": "@electron-forge/maker-deb", "config": {} }, { "name": "@electron-forge/maker-rpm", "config": {} } ] } }, "dependencies": { "electron-squirrel-startup": "^1.0.0" }, "devDependencies": { "@electron-forge/cli": "^6.0.0-beta.61", "@electron-forge/maker-deb": "^6.0.0-beta.61", "@electron-forge/maker-rpm": "^6.0.0-beta.61", "@electron-forge/maker-squirrel": "^6.0.0-beta.61", "@electron-forge/maker-zip": "^6.0.0-beta.61", "electron": "16.0.5" } } ``` > 其中"config"可以提取到JS文件中 ![image-20211231180725787](Electron-forge使用实战.assets/image-20211231180725787.png) ### 2.3 本地运行package ```she electron-forge package ``` ![image-20211231180853228](Electron-forge使用实战.assets/image-20211231180853228.png) 或 ```shell npm run package ``` ![image-20211231180928149](Electron-forge使用实战.assets/image-20211231180928149-16409453723491.png) ### 2.3 本地运行start ```shell npm run start ``` **运行效果** ![image-20211231180651235](Electron-forge使用实战.assets/image-20211231180651235.png) ### 2.4 本地运行make ```shell npm run make ``` ![image-20220104151126878](Electron-forge使用实战.assets/image-20220104151126878.png) ## 3 配置 package.json中注意: ​ **"main": "src/index.js"** ​ ![image-20220104151520650](Electron-forge使用实战.assets/image-20220104151520650.png) src/index.js ```js const { app, BrowserWindow } = require('electron'); const path = require('path'); // Handle creating/removing shortcuts on Windows when installing/uninstalling. if (require('electron-squirrel-startup')) { // eslint-disable-line global-require app.quit(); } const createWindow = () => { // Create the browser window. const mainWindow = new BrowserWindow({ width: 800, height: 600, }); // and load the index.html of the app. mainWindow.loadFile(path.join(__dirname, 'index.html')); // Open the DevTools. mainWindow.webContents.openDevTools(); }; // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.on('ready', createWindow); // Quit when all windows are closed, except on macOS. There, it's common // for applications and their menu bar to stay active until the user quits // explicitly with Cmd + Q. app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); } }); app.on('activate', () => { // On OS X it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (BrowserWindow.getAllWindows().length === 0) { createWindow(); } }); // In this file you can include the rest of your app's specific main process // code. You can also put them in separate files and import them here. ``` ## 4 参考 [BrowserWindow 相关设置](https://www.electronjs.org/docs/latest/api/browser-window) [BrowserWindow 相关设置(中文)](https://cloud.tencent.com/developer/section/1115971) [electron-forge](https://www.electronforge.io/) [实例下载](https://gitee.com/lianggit/electron-forge-demo.git)