Bootstrap

electron框架的自定义外部配置文件的配置与读取

简介

在vue2.6版本后,会生成vue.config.js文件,本文章主要讲解如何在vue中,如何生成electron的外部配置文件,与如何读取外部配置文件。


一、配置与生成config.json文件

首先,要在项目下新建一个config.json文件,然后再config文件中,写入一些信息。
在这里插入图片描述


然后在vue.config.js中写入配置,通知electron在打包时,不要将指定文件打包进app.asar中。

pluginOptions: {
   
     electronBuilder: {
   
         builderOptions: {
   
             // build配置在此处
             // options placed here will be merged with default configuration and passed to electron-builder
             appId: "com.emr.app",
             extraResources: [
                 {
    "from": "./config.json", "to": "../" }
             ],
             "mac": {
    "icon": "./public/favicon.icns" },
             "win": {
    "icon": "./public/favicon.ico" }  // 配置打包后,在win下的应用图标。ico图片至少要是256*256尺寸的,尺寸太小,会打包失败。
         }
     },
 },

这里附上我的vue.config.js文件的配置,方便大家理解

const webpack = require('webpack')

module.exports = {
   
    lintOnSave: false,
    publicPath: "./",
    // PC端适配代码
    // css: {
   
    //   loaderOptions: {
   
    //     css: {},
    //     postcss: {
   
    //       plugins: [
    //         require("postcss-px2rem")({
   
    //           remUnit: 192,  // 以1920屏幕为标准来缩放网页
    //           propList: ['*', '!border', '!font-size'],  // border属性不进行适配
    //         })
    //       ]
    //     }
    //   }
    // },
    chainWebpack: config => {
   
        config.plugin('provide').use(webpack.ProvidePlugin, [{
   
            $: 'jquery',
            jquery: 'jquery',
            jQuery: 'jquery',
            'window.jQuery': 'jquery'
        }])
    },
    configureWebpack: {
   
        resolve: {
   
            alias: {
   }
        }
    },
    pluginOptions: {
   
        electronBuilder: {
   
            builderOptions: {
   
                // build配置在此处
                // options placed here will be merged with default configuration and passed to electron-builder
                appId: "com.emr.app",
                extraResources: [
                    {
    "from": "./config.json", "to": "../" },
                    {
    "from": "./MatchDownloader.exe", "to": "../" },
                    {
    "from": "./download.bat", "to": "../" },
                ],
                "mac": {
    "icon": "./public/favicon.icns" },
                "win": {
    "icon": "./public/favicon.ico" }
            }
        },
    },

    // 代理
    /* devServer: {
      port: 8080,
      // host: 'localhost',
      https: false, // https:{type:Boolean}
      open: true, // 配置自动启动浏览器
      disableHostCheck: true,
        "proxy": {
        "/*": {
            "target": "http://xxx",
            "changeOrigin": true
        }
      }
    }, */

}


然后,在执行npm run electron:build命令后,就可以在打包后的文件里看到config.json文件被独立出来了。

在这里插入图片描述
至此,就完成了第一步,配置与生成config.json这个外部配置文件了。


二、读取外部配置文件 ---- config.json

至此,我们已经有了config.json这个外部配置文件,要读取这个文件的配置信息,就要用到electron的remote模块,这个模块不同electron版本的获取方式不同,这个用了是electron13.0.0的获取方法。

首先,要在electorn的入口文件(我项目里的是background.js)里,做一些配置,让html页面能访问node里面的fs模块,方便调用fs来读取文件。

// main.js
'use strict'

// Modules to control application life and create native browser window
// const { app, BrowserWindow } = require('electron')
import moment from "moment"
import {
    app, protocol, BrowserWindow, globalShortcut } from 'electron'
import {
    createProtocol, installVueDevtools } from 'vue-cli-plugin-electron-builder/lib'

// 设置运行内存350MB
process.env.NODE_OPTIONS = '--no-warnings --max-old-space-size=350'
// app.commandLine.appendSwitch('disable-site-isolation-trials');  // //这行一定是要加的,要不然无法使用iframe.contentDocument方法

const {
    ipcMain, Menu, MenuItem,

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;