1

开发环境:Ubuntu 20.04、node 16.20.2、npm 8.19.4

1、新建package.json文件

{
  "name": "electron",
  "version": "1.0.0",
  "description": "test",
  "main": "main.js",
  "author": "wst",
  "license": "MIT",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": " BUILD_TYPE=develop electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make"
  },
  "dependencies": {
    "electron-squirrel-startup": "^1.0.0"
  },
  "devDependencies": {
    "@electron-forge/cli": "^7.2.0",
    "@electron-forge/maker-deb": "^7.2.0",
    "@electron-forge/maker-rpm": "^7.2.0",
    "@electron-forge/maker-squirrel": "^7.2.0",
    "@electron-forge/maker-zip": "^7.2.0",
    "@electron-forge/plugin-auto-unpack-natives": "^7.2.0",
    "electron": "^28.1.4"
  }
}

2、新建 main.js 文件

const { app, BrowserWindow, globalShortcut } = require('electron');

// 获取脚本(命令行)中配置的环境变量
const buildType = process.env.BUILD_TYPE;

function createWindow() {
    var win = new BrowserWindow({
        width: 800,
        height: 400,
        icon: 'icon.png',
        autoHideMenuBar: true, // 隐藏菜单栏
        resizable: false  // 窗口是否可拉伸缩放
    });

    // 加载应用
    win.loadURL('https://192.168.1.100');

    // 当 window 被关闭,这个事件会被触发
    win.on('closed', () => {
        // 取消引用 window 对象,如果你的应用支持多窗口的话,
        // 通常会把多个 window 对象存放在一个数组里面,
        // 与此同时,你应该删除相应的元素。
        win = null;
    })

}

// 忽略https证书相关错误
app.commandLine.appendSwitch('ignore-certificate-errors');

// electron 初始化, 创建浏览器窗口
app.whenReady().then(createWindow);


// 注册时,窗口是聚焦 
app.on('browser-window-focus', function () {
    var shortcut = ['F11', 'CommandOrControl+R'];
    if (buildType !== 'develop') {
        shortcut.push('CommandOrControl+Shift+i');
    }

    globalShortcut.registerAll(shortcut, () => {
        console.log("Shortcut Disabled");
    });
});

// 取消注册时,模糊
app.on('browser-window-blur', function () {
    globalShortcut.unregisterAll(); // 取消注册所有全局快捷方式
});

// 当全部窗口关闭时退出
app.on('window-all-closed', () => {
    // 在 macOS 上,除非用户用 Cmd + Q 确定地退出,
    // 否则绝大部分应用及其菜单栏会保持激活。
    if (process.platform !== 'darwin') {
        app.quit();
    }
})

app.on('activate', () => {
    // 在macOS上,当单击dock图标并且没有其他窗口打开时,
    // 通常在应用程序中重新创建一个窗口。
    if (win === null) {
        onReady();
    }
})

3、安装依赖

1) 修改github DNS映射
sudo vi /etc/hosts
20.248.137.48 github.com(末尾添加)

2) 安装 dpkg、 fakeroot、alien
sudo apt-get install dpkg
sudo apt-get install fakeroot
sudo apt-get install alien


3) 更改npm 源
npm config set registry https://registry.npmmirror.com
npm config set ELECTRON_MIRROR https://npmmirror.com/mirrors/electron/

4) 安装
npm install
npx electron-forge import

4、调试

npm run start

5、打包

npm run make

风晴雪sheep
16 声望5 粉丝