Mac使用Electron打包vue-admin后台管理系统

1.首先clone一个后台管理系统模板
git clone https://github.com/PanJiaChen/vue-admin-template.git
2.安装electron
npm install electron -g
或者
yarn add electron

  1. Vue项目添加Electron-builder打包工具
    vue add electron-builder
    首先要安装vue-cli
    yarn add @vue/cli
    4.其他配置
    修改logo图片配置打包信息:注意:是vue.config.js文件,不是package.js
根目录下 vue.config.js文件
使用时候请去掉里面的注释,不然跑不起来。
我下面引入的图片里面有一个build/logo.ico的文件,这个文件大小必须是256*256的
然后这个build的目录在项目根目录下创建,图片放进去就行
module.exports = {
    pluginOptions: {
        electronBuilder: {
            builderOptions: {
                nsis: {
                  allowToChangeInstallationDirectory: true,
                  oneClick: false,
                  installerIcon: "./build/logo.ico",  //安装logo
                  installerHeaderIcon: "./build/logo.ico" //安装logo
                },
                electronDownload: {
                    mirror: "https://npm.taobao.org/mirrors/electron/" //镜像设置
                },
                win: {
                    icon: './build/logo.ico' //打包windows版本的logo
                },
                productName: "应用名称",  //应用的名称
            }
        }
    },
}

我再放一份electron-builder的配置文件,对比下上下两个代码就知道里面怎么配置了

"build": {
    "productName":"xxxx",       //项目名 这也是生成的exe文件的前缀名
    "appId": "com.xxx.xxxxx",   //包名  
    "copyright":"xxxx",         //版权信息
    "directories": {            //输出文件夹
      "output": "build"
    }, 
    "nsis": {   //nsis相关配置,打包方式为nsis时生效
      "oneClick": false,                                // 是否一键安装
      "allowElevation": true,                           // 允许请求提升,如果为false,则用户必须使用提升的权限重新启动安装程序。
      "allowToChangeInstallationDirectory": true,       // 允许修改安装目录
      "installerIcon": "./build/icons/aaa.ico",         // 安装图标
      "uninstallerIcon": "./build/icons/bbb.ico",       //卸载图标
      "installerHeaderIcon": "./build/icons/aaa.ico",   // 安装时头部图标
      "createDesktopShortcut": true,                    // 创建桌面图标
      "createStartMenuShortcut": true,                  // 创建开始菜单图标
      "shortcutName": "xxxx",                           // 图标名称
      "include": "build/script/installer.nsh",          // 包含的自定义nsis脚本
    },
    "publish": [
      {
        "provider": "generic",      // 服务器提供商,也可以是GitHub等等
        "url": "http://xxxxx/"      // 服务器地址
      }
    ],
    "win": {
      "icon": "build/icons/aims.ico",
      "target": [
        {
          "target": "nsis",         //使用nsis打成安装包,"portable"打包成免安装版
          "arch": [
            "ia32",             //32位
            "x64"               //64位
          ]
        }
      ]
    },
    "mac": {
      "icon": "build/icons/icon.icns"
    },
    "linux": {
      "icon": "build/icons"
    }
  }

隐藏菜单栏目:根目录下src/background.js文件,找到app.on方法 (按照步骤来做,会生成这个文件的)

app.on('ready', async () => {
    //这里注释掉,没啥用
    // if (isDevelopment && !process.env.IS_TEST) {
    //  // Install Vue Devtools
    //  try {
    //      await installExtension(VUEJS_DEVTOOLS)
    //  } catch (e) {
    //      console.error('Vue Devtools failed to install:', e.toString())
    //  }
    // }
    createWindow()
    // 隐藏菜单栏
    const {
        Menu
    } = require('electron');
    Menu.setApplicationMenu(null);
    // hide menu for Mac 
    if (process.platform !== 'darwin') {
        app.dock.hide();
    }
})

设定宽高也在这个文件里面

const win = new BrowserWindow({
        width: 1000,
        height: 800,
        title: '标题',
        webPreferences: {
            // Use pluginOptions.nodeIntegration, leave this alone
            // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info
            nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION,
            contextIsolation: !process.env.ELECTRON_NODE_INTEGRATION
        }
    })

5.Mac运行builder的时候会报错

 ⨯ Exit code: ENOENT. spawn /usr/bin/python ENOENT  failedTask=build 
 stackTrace=Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT

解决方案

1、下载python2.7 下载地址
2、找到安装的位置

which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python

3.打开文件
/node_modules/dmg-builder/out/dmg.js
查找
/usr/bin/python
修改为
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
执行打包命令成功打包
6.添加打包windows exe包命令
page.json修改命令

"electron:build-mac": "vue-cli-service electron:build --macos",
"electron:build-win64": "vue-cli-service electron:build --windows --ia32",

7.打包以后跳转问题
第一步修改路由配置
history改为hash

const createRouter = () => new Router({
  mode: 'hash', // require service support
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes
})

第二步
electron没有js-cookie依赖
找到src/utils/auth.js修改为

// import Cookies from 'js-cookie'

const TokenKey = 'vue_admin_template_token'

export function getToken() {
  // return Cookies.get(TokenKey)
  return window.localStorage.getItem(TokenKey)
}

export function setToken(token) {
  // return Cookies.set(TokenKey, token)
  return window.localStorage.setItem(TokenKey,token)
}

export function removeToken() {
  // return Cookies.remove(TokenKey)
  return window.localStorage.removeItem(TokenKey)
}

然后打包即可成功跳转

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容