项目开始

yarn start

electron 的开发环境

npm install electron-is-dev --save-dev

concurrently 将两个项目合并到一个指令上执行

npm install concurrently --save-dev

"dev": "concurrently \"electron .\" \"npm start\""

wait-on 监听某个项目或某个指令执行完再执行下一个项目

npm install wait-on --save-dev

"dev": "concurrently \"wait-on http://localhost:3000 && electron .\" \"npm start\""

cross-env 控制 react 环境变量 使每次启动 react 时候不重新打开浏览器窗口

npm install cross-env --save-dev

cross-env BROWSER=none

fontawesome svg 图标库

npm i --save @fortawesome/fontawesome-svg-core npm i --save @fortawesome/free-solid-svg-icons npm i --save @fortawesome/react-fontawesome yarn add @fortawesome/free-brands-svg-icons

classnames

yarn add classnames

node-sass 添加 css 预处理

yarn add node-sass

easyMDE 提交 markdown 编辑器

yarn add react-simplemde-editor

uuid 将 ID 变为唯一识别码

yarn add uuid

react 页面调用 node 模块时候为什么要加 window

因为 react 项目是通过 webpack 打包的,webpack 对 import 和 require 文件引入做了特殊处理,所以当使用 require 时候本质被打包成了特殊的 module 模块,该模块没用包含 node 的核心模块,所以需要使用 window 来通过全局环境来引入 node 模块

electron-store

yarn add electron-store 使用 electron-store 来持久化数据

qiniu

npm install qiniu 远程存储的 SDK

electron-builder

~ https://github.com/electron-userland/electron-builder ~ https://electron.org.cn/builder/index.html

使用 electron-builder 来打包 在 scripts 添加 打包脚本

"pack": "electron-builder --dir",
"dist": "electron-builder"

通过在 package.json 文件 内添加 build 配置

"appId": "sdcard",
"productName": "对比图下载",
"files": [
  "build/**/*",
  "node_modules/**/*",
  "package.json",
  "main/**/*",
  "utils/**/*",
  "main.js"
],
"extraResources": {
  "from": "./static/",
  "to": "static"
},
"extends": null

打包出错问题

如果有打包出错可能是 electron 安装有问题,或者electron-builder安装有问题, 如果是 electron-builder 则根据官网建议使用 yarn add electron-builder --dev 来安装 如果是electron 可以将 node_modules 重新其他的依赖重新安装,然后再最后安装electron 依赖 或者参考这个issue: electron/electron#8466 (comment)

优化打包的体积

将package.json 配置文件中 dependencies 项的关于渲染端依赖(即electron不需要用到的全部放到devDependencies里)放到devDependencies

使用webpack来打包electron的main入口文件

配置查看 webpack.config.js 文件 通过 webpack 将main.js 入口文件打包到 /build 文件夹内 再到 package.json 的 build 的配置项中添加 extraMetadata 时electron打包时指定入口文件在 build 上