目录

  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. Ayoa:麻雀虽小、五脏俱全的思维导图工具

    Ayoa是一款简单好用的思维导图软件,在PC端可以使用Ayoa网页版,也就是不用下载即可使用,十分轻便省力.但麻雀虽小,五脏可十分俱全,同类的其他大型软件有的东西它可一点不少,甚至还有更多的特殊功能. ...

  2. 不想错过网课?不妨用Camtasia录制下来!

    2020年突发的这场疫情给我们的日常生活与学习带来了一些不便,却也意外的让网课走红了起来.小学.中学.大学都开始通过媒体工具或直播平台开始授课,但网络授课与实际课堂上课还是有区别的,学生们受到环境影响 ...

  3. [工具推荐]制作基于Dash的本地文档方便搜索文档api和内容

    [版权声明]:本文章由danvid发布于http://danvid.cnblogs.com/,如需转载或部分使用请注明出处 最近在看es的文档,发现查起api来真的很麻烦,很多现在开源的文档都没有查询 ...

  4. 本地VM安装虚拟机,使用xshell连接

    首先把VM设置成上面那样 在ubuntu里面安装ssh apt-get install openssh-server 启动服务 /etc/init.d/ssh startifconfig 查看ip x ...

  5. nginx负载均衡配置详解

    已经了解了负载均衡的常用算法:轮询,加权轮询,热备等... 接下来就看看具体怎么配置. upstream配置是写一组被代理的服务器地址,然后配置负载均衡的算法. upstream mysvr{ ser ...

  6. P2943 [USACO09MAR]Cleaning Up G

    一句话题意:将一个数列分成若干段,每段的不和谐度为该段内不同数字数量的平方,求不和谐度之和的最小值. 令 \(f_i\) 表示前 \(i\) 个数的最小答案,很容易就能写出暴力转移方程:\(f_i=\ ...

  7. golang实现mysql udf

    UDF(user-defined function) 当mysql提供的内置函数(count,min,max等)无法满足需求时,udf用于扩展自定义函数,满足特定查询需求. 在这里,假定一种db应用场 ...

  8. mysql undo+redo+binlog

    rt 数据库事务开始之前,会将要修改的记录存放到UNdo日志里,当事务回滚时或数据库崩溃时,可以利用undo日志撤销未提交事务对数据库产生的影响. 逻辑日志,记录一个过程,提交后不会删除.delete ...

  9. 生僻的mysql

    1.show table status like 'user' 2.alter table mytableEngine=InnoDB 需要执行很长时间,mysql会按行将数据从原表复制到一张新的表中, ...

  10. Kubernetes 使用 Kubevirt 运行管理 Windows 10 操作系统

    原文链接:https://fuckcloudnative.io/posts/use-kubevirt-to-manage-windows-on-kubernetes/ 最近我发现我的 Kubernet ...