自学内容网 自学内容网

超快上手electron,electron保姆级教程(含运行、打包、electron下载慢),利用electron把web端应用转成桌面应用

electron配置步骤 :

1.首先node及npm是否安装。

2.管理者模式cmd进行项目初始化
 

mkdir my-test-app 

cd my-test-app 

npm init

此时package.json内容如下(有必填项)

3.首管理者模式设置环境变量再安装electron (否则速度太慢)。

$env:ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"   //设置环境变量

npm install --save-dev electron                                  //安装electron

4.首手动修改package.json和新建main.js后 , npm start 运行项目。



package.json目前信息如下

// 这是目前package.json的内容

{
  "name": "my-test-app",
  "version": "1.0.0",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "electron-forge start",
  },
  "author": "hyy",
  "license": "ISC",
  "description": "hyy",
  "dependencies": {
    "my-test-app": "file:"
  },
  "devDependencies": {
    "electron": "^33.2.1"
  }
}


 

web应用转桌面应用及打包的步骤 :

1.在上述基础上且有web网址 , 更改main.js后运行项目

// 目前main.js的内容如下

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

app.on('ready', () => {
  //当app准备好后,执行createWindow创建窗口
  const win = new BrowserWindow({
    width: 800, //窗口宽度
    height: 600, //窗口高度
    autoHideMenuBar: true, //自动隐藏菜单档
    alwaysOnTop: true, //置顶
    x: 0, //窗口位置x坐标
    y: 0 //窗口位置y坐标
  })
  //加载一个远程页面
  win.loadURL('http://h5.canon.com.cn/user/login')
})



2.web网址时可以打包项目将路径指向打包后的地址 , 更改main.js后运行项目。

// 这是目前的main.js的内容

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

function createWindow () {
  //当app准备好后,执行createWindow创建窗口
  const win = new BrowserWindow({
    width: 800, //窗口宽度
    height: 600, //窗口高度
    autoHideMenuBar: true, //自动隐藏菜单档
    alwaysOnTop: true //置顶
  })
  //引入页面
  win.loadFile('./my-electron-app/dist/index.html')
  win.openDevTools() //自动打开调试窗口
  console.log('main.js里的main.js')
}

app.on('ready', () => {
  createWindow()
  //兼容核心代码1
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})


3.打包采用的是electron Forge打包的方式 (个人尝试electron-builder和electron-packager都踩雷了)
 

npm install --save-dev @electron-forge/cli

npx electron-forge import

npm run make


3.1 npx electron-forge import 后 , package.json会多一些内容 , 不用管


 

// 这是目前package.json的内容

{
  "name": "my-test-app",
  "version": "1.0.0",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make"
  },
  "author": "hyy",
  "license": "ISC",
  "description": "hyy",
  "dependencies": {
    "electron-squirrel-startup": "^1.0.1",
    "my-test-app": "file:"
  },
  "devDependencies": {
    "@electron-forge/cli": "^7.6.0",
    "@electron-forge/maker-deb": "^7.6.0",
    "@electron-forge/maker-rpm": "^7.6.0",
    "@electron-forge/maker-squirrel": "^7.6.0",
    "@electron-forge/maker-zip": "^7.6.0",
    "@electron-forge/plugin-auto-unpack-natives": "^7.6.0",
    "@electron-forge/plugin-fuses": "^7.6.0",
    "@electron/fuses": "^1.8.0",
    "electron": "^33.2.1"
  }
}


3.2 npm run make (目前打包速度巨慢 , 5分钟 , 10分钟 , 甚至30分钟... , 未找到好的解决方法)


4.打包完成后 , 双击运行程序 (打包位置如下)



5.修改打包后的icon样式 (目前的项目结构 、icon图、 forge.config.js内容、打包位置、应用程序如下)



// forge.config.js内容如下

const { FusesPlugin } = require('@electron-forge/plugin-fuses')
const { FuseV1Options, FuseVersion } = require('@electron/fuses')
const path = require('path') // 新增部分

module.exports = {
  packagerConfig: {
    asar: true,

    icon: path.join(__dirname, 'logo.ico') // 不需要文件扩展名
  },
  rebuildConfig: {},
  makers: [
    {
      name: '@electron-forge/maker-squirrel',
      config: {
        name: 'hyy_electron',
        setupIcon: path.join(__dirname, 'logo.ico'), // 指定 setup 图标
        iconUrl: 'file://' + path.join(__dirname, 'logo.ico') // 指定安装包图标
      }
    },
    {
      name: '@electron-forge/maker-zip',
      platforms: ['darwin']
    },
    {
      name: '@electron-forge/maker-deb',
      config: {}
    },
    {
      name: '@electron-forge/maker-rpm',
      config: {}
    }
  ],
  plugins: [
    {
      name: '@electron-forge/plugin-auto-unpack-natives',
      config: {}
    },
    // Fuses are used to enable/disable various Electron functionality
    // at package time, before code signing the application
    new FusesPlugin({
      version: FuseVersion.V1,
      [FuseV1Options.RunAsNode]: false,
      [FuseV1Options.EnableCookieEncryption]: true,
      [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
      [FuseV1Options.EnableNodeCliInspectArguments]: false,
      [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
      [FuseV1Options.OnlyLoadAppFromAsar]: true
    })
  ]
}






6.修改打包后的文字需重新构建项目, 直接更改文字后打包会报错 

常见问题及解决:

1. electron-forge打包时报错 , 解决 : 保持只有一个窗口 , 并重新 npm run make。2. 下载或打包报错超时 , 解决 : 用管理者模式设置 $env:ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"

3. 下载或打包报错超时 , 解决 : 用管理者模式设置


原文地址:https://blog.csdn.net/Kyrie_mvp/article/details/144428976

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!