目录

  1. Webpack + Vue 搭建开发环境及打包安装 ------- 打包渲染进程
  2. Electron + Webpack  搭建开发环境及打包安装 ------- 打包主进程
  3. Electron + Webpack + Vue 搭建开发环境及打包安装 ---- 打包electron应用

二、打包主线程

1. 项目目录结构

  首先创建一个项目文件夹main 然后在该文件夹中执行 npm init -y 命令

  目录结构说明:

  main

     | - app   文件输出目录

     | - builder  构建配置目录

     | - webpack.config.js

     | - src      资源文件目录

     | - createWindow

       | - index.js

     | - index.html

     | main.js

    | - package.json

2. 书写配置文件

  /builder/webpack.config.js    添加一下代码

 1 const path = require('path');
2 const webpack = require('webpack');
3 const { dependencies } = require('../package.json');
4 const ElectronDevWebpackPlugin = require('electron-dev-webpack-plugin');
5
6 module.exports = {
7 // 配置开发模式
8 mode: 'development',
9 entry: {
10 // 配置入口文件
11 main: path.join(__dirname, '../src/main.js')
12 },
13 // 配置出口文件
14 output: {
15 path: path.join(__dirname, '../app/'),
16 libraryTarget: 'commonjs2',
17 filename: '[name].js'
18 },
19 // 监听文件改变
20 watch: true,
21 optimization: {
22 minimize: true,
23 },
24 module: {
25 rules: [{
26 test: /\.js$/,
27 loader: 'babel-loader',
28 exclude: /node_modules/
29 }, {
30 test: /\.node$/,
31 loader: 'node-loader'
32 }]
33 },
34 externals: [
35 ...Object.keys(dependencies || {})
36 ],
37 node: {
38 __dirname: true,
39 __filename: true
40 },
41 plugins: [
42 new webpack.DefinePlugin({}),
43 new ElectronDevWebpackPlugin()
44 ],
45 target: 'electron-main'
46 }

  /builder/dev.js 添加一下代码

 1 const webpack = require('webpack');
2 const mainConfig = require('./webpack.config.js');
3
4 function mainDev(){
5  // 运行 webpack打包
6 webpack(mainConfig, err => {
7 if(err){
8 console.log('打包主进程遇到Error!');
9 } else {
10 console.log("打包主进程成功");
11 }
12 })
13 }
14
15 mainDev();

  /src/mian.js   添加一下代码

 1 const electron = require('electron');
2 const { createMianWin } = require('./createWindow');
3 const path = require("path");
4
5 class App {
6 constructor({app, BrowserWindow}){
7 this.BrowserWindow = BrowserWindow;
8 this.app = app;
9 this.win = null;
10 this.eventHandle(app);
11 }
12 createWindow(){
13 this.win = createMianWin();
14 let filePath = path.join(__dirname, './index.html');
15 this.win.loadFile(filePath);
16 // 等待渲染进程页面加载完毕再显示窗口
17 this.win.once('ready-to-show', () => this.win.show())
18 }
19 eventHandle(app){
20 app.on('closed', () => this.closed());
21 app.on('ready', () => this.ready());
22 app.on('window-all-closed', () => this.windowAllClosed());
23 app.on('activate', () => this.activate());
24 }
25 activate(){
26 if(!this.win) this.createWindow();
27 }
28 windowAllClosed(){
29 if(process.platform !== 'darwin') this.app.quit();
30 }
31 ready(){
32 this.createWindow(); // 创建主窗口
33 }
34 closed(){
35 this.win = null;
36 }
37 }
38
39 let app = new App(electron);

  /src/createWindow/index.js   添加如下代码 

 1 const { BrowserWindow, dialog } = require('electron');
2
3 module.exports = {
4 createMianWin(options = {}){
5 options = Object.assign({
6 width: 1200, // 窗口宽度
7 height: 800, // 窗口高度
8 // autoHideMenuBar:true,
9 backgroundColor: '#fff', // 窗口背景颜色
10 show: false, // 创建窗口后不显示窗口
11 hasShadow: false,
12 webPreferences:{
13 nodeIntegration: true, // 在渲染进程引入node模块
14 }
15 }, options);
16 return new BrowserWindow(options);
17 }
18 }

  /src/index.html   添加如下代码

 1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>electron</title>
6 </head>
7 <body>
8 <h1>Hello Electron</h1>
9 </body>
10 </html>

3. 添加npm 命令  

  /package.json   添加 npm 脚本命令

  "dev": "node ./builder/dev.js"

4. 安装所需依赖

  1. webpack
  2. webpack-cli
  3. electron-dev-webpack-plugin
  4. babel-loader
  5. node-loader
  6. electron
  7. @babel/core

吐槽一句:昨天在写博客的时候 webpack 还是 5.10.3 版本今天就变成 5.11.0版本了

5. 运行npm 脚本

  在项目的目录下运行   npm run dev 运行成功将会看到如下界面

  然后会自动弹出electron App 窗口界面  如下效果表示配置成功

6. 测试热加载是否生效

  打开 /src/main.js 对其中的代码进行修改然后再次保存,electron App 窗口会里面重新关闭并自动重启编译,表示热加载配置成功

7. 总结

  至于还有打包生成exe可执行文件在后面 进行组合一起的时候再进行说明,最后就是在这里附上源码地址 https://github.com/Liting1/webpack5-electron

 如果有问题可以留言讨论

二、Electron + Webpack + Vue 搭建开发环境及打包安装的更多相关文章

  1. 一、Electron + Webpack + Vue 搭建开发环境及打包安装

    目录 Webpack + Vue 搭建开发环境及打包安装 ------- 打包渲染进程 Electron + Webpack  搭建开发环境及打包安装 ------- 打包主进程 Electron + ...

  2. vue搭建开发环境

    windows下搭建vue开发环境 一.安装node.js 安装   vue项目通常通过webpack工具来构建,而webpack命令的执行是依赖node.js环境,所以首先要安装node.js. n ...

  3. React + webpack 快速搭建开发环境

    因网上大多React + webpack快速搭建的运行不起来,便自行写了一个.在搭建开发环境的前需安装nodejs,npm. 新建一个工作目录,比如叫reactdome,在reactdome目录中运行 ...

  4. 2 webpack 4 加vue搭建开发环境最终配置

    1 package.json { "name": "c", "version": "1.0.0", "desc ...

  5. [Vue] karme/jasmine/webpack/vue搭建测试环境

    karma 和 jasmine karma 是 google 开源的一个基于 Node.js 的 JavaScript 前端测试运行框架,前身叫 Testacular. jasmine 是一个 jav ...

  6. 搭建开发环境3) Debian8 安装Netbeans

    1.下载最新版的Netbeans.sh(netbeans-8.2-linux.sh) 2.进入管理员账户,移动到下载的目录 ./netbeans-8.2-linux.sh //执行安装脚本 出现界面安 ...

  7. 搭建开发环境2)Debian8 安装jdk 1.8

    1.由于Debian自带了openjava运行时需要先卸载掉 java -version //查看当前java版本 apt-get remove openjdk* //卸载当前的openjdk 2.下 ...

  8. Mac安装vue.js开发环境

    Mac安装vue.js开发环境 DannyHooDanny的专栏订阅 一.vue.js开发环境 二.初始化一个vue.js项目 三.vue.js项目打包部署 本来以为在Mac上搭建vue.js的环境挺 ...

  9. Window上python 开发--1.搭建开发环境

    事实上在开发python最好在ubuntu环境下,简单也便于扩展各个package.可是我的linux的电脑临时不在身边.还的我老婆的电脑win7没办法啊. 因为python的跨平台性.在window ...

随机推荐

  1. Markdown的应知应会

    Markdown介绍 什么是Markdown Markdown是一种纯文本.轻量级的标记语言,常用作文本编辑器使用.和记事本.notepad++相比,Markdown可以进行排版:和Word相比,Ma ...

  2. 使用CorelDRAW修饰用于打印的图像

    CorelDRAW在打印输出方面一直做的非常棒,它不仅是一款专业的矢量绘图软件,位图处理也是很厉害的.本文我们讲述修饰.处理数码相机图像,以便将其用于 CMYK 打印作业的一些重要步骤,先来看下被调整 ...

  3. Trie树总结

    Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,PATRICIA tree,以及bitwise版本的crit-bit tree.当然很多名字的意义其实有交 ...

  4. 他是 ISIJ 第四名,也是在线知名题库的洛谷“网红”

    转载自加藤惠. 2020年国际初中生信息学竞赛(ISIJ)上,以优秀成绩拿下第四名年仅初三的张湫阳,成为最夺目的选手之一. 而且虽然是初三的选手,但他取得优异成绩后,不少网友并不感到陌生,纷纷留言: ...

  5. Non Super Boring Substring 题解(hash+思维)

    题目链接 题目大意 给你一个长度为d(d<=1e5)的字符串,要你求有多少个子串满足这个子串不包含长度大于等于k的回文子串 题目思路 首先可以hash预处理,然后O(1)用前缀hash值和后缀h ...

  6. 推荐系统实践 0x0a 冷启动问题

    什么是冷启动问题 如何在没有大量用户数据的情况下设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动问题.冷启动问题主要分为三类: 用户冷启动 物品冷启动 系统冷启动 下面我们将 ...

  7. Alpha冲刺-第二次冲刺笔记

    Alpha冲刺-冲刺笔记 这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE2 这个作业要求在哪里 https://edu.cnblogs. ...

  8. 卡耐基梅隆大学(CMU)元学习和元强化学习课程 | Elements of Meta-Learning

    Goals for the lecture: Introduction & overview of the key methods and developments. [Good starti ...

  9. 这可能是最为详细的Docker入门总结

    写在前面 毕设是关于区块链的,自然就用到了docker,感觉到了docker的强大.学习源于总结,所以找了一些资料,这篇文章原作写的不错,看了好多遍哈哈. 这可能是最为详细的Docker入门总结 市面 ...

  10. 老猿学5G:3GPP 5G规范中的URI资源概念

    ☞ ░ 前往老猿Python博文目录 ░ 说明: 本文参考3GPP29.501<Principles and Guidelines for Services Definition>结合笔者 ...