🎉 A magical react admin template supporting electron.
个人自用 React 项目开发模板,同时集成 Electron 支持。默认使用TypeScript
开发,若使用JavaScript
开发,需注意tsconfig.json
中allowJs
配置。本分支作为项目快速启动模板,不会过多提交代码,只提供基础模板。
注意事项
- 本项目模板同时引入了
Redux
和Mobx
的演示,仅提供开始前的选择演示,所以切忌二者同时使用。 - 删除其中一个很容易,在
src/app.tsx
中MobxProvider
和ReduxProvider
二选一即可 - 路由权限数据使用了 redux 的状态,根据选择修改,入口在
src/layout/index.tsx
- 演示页面文件在
src/pages/store-test
目录,对应路由在src/router/tests.tsx
文件,直接删除即可 - 然后选择性删除
src/mobx
目录或src/redux
目录。 - 若选择
Mobx
,请将@reduxjs/toolkit
、react-redux
、reselect
卸载,反之请将mobx
、mobx-react
卸载 - 标签页组件
TabsBar(src/layout/base-layout/components/tabs-bar)
依赖了redux
的状态,使用mobx
请自行改造
# 安装依赖
> yarn # npm install
# 启动前会构建dll
> yarn start # npm run start
# 启动不会构建dll,之前存在就用
> yarn dev # npm run dev
# 启动electron开发环境
> yarn electron # npm run electron
本项目对代码风格有一定的要求,具体参考.eslintrc.js
、.stylelintrc.js
、.prettierrc.js
文件配置。
项目提交前会对commit message
进行检查,不符合规范提交会被拒绝。commit message
格式如下:
> type(scope?): subject // scope可选
提交的 type
可选值如下:
['build', 'ci', 'chore', 'docs', 'feat', 'fix', 'perf', 'refactor', 'revert', 'style', 'test'];
为了互不影响,web
代码打包再dist
目录,electron
代码打包在build
目录,其中渲染进程代码全部在build/render
目录。
一些BuiltIns
、Plugins
、Loader
的环境变量默认值是process.env.NODE_ENV
,但是自家 CI 没得商量只传递一个环境变量NODE_ENV
且会超出development
、test
、production
范围,同时为了变量扩展,此项目BABEL_ENV
、NODE_ENV
已固定为development
、production
。也就是说无论NODE_ENV
传递什么值都会在赋值给BUILD_ENV
后被强制矫正为development
或production
。
所以本模板中请使用BUILD_ENV
来区分环境,process.env.NODE_ENV
不再使用
本模板内置
electron
打包支持。
# web打包,默认生产环境
> yarn build # npm run build
# electron打包,默认生产环境
> yarn package # npm run package
# electron打包,仅打包
> yarn package:only # npm run package:only
本模板内置了electron
相关功能,为了方便不需要electron
的项项目并没有将主进程代码和渲染进程代码放置一起。目录结构根据需要可以轻松自行调整,只需调整.scripts/config/paths.js
文件相关变量即可轻松搞定。
如果不需要
electron
又不想其留在项目中,操作如下:
- 删除
tsconfig.json
中include
数组的main
目录配置和paths
对象中的~/*
- 删除
.scripts/config/index.js
、.scripts/config/paths.js
中 electron 相关目录配置,有注释 - 删除
.scripts/electron
文件夹` - 删除
public/main
目录 - 删除
package.json
文件中scripts
对象的electron
相关命令 - 删除根目录下
electron.config.js
文件 - 卸载
package.json
文件中的依赖electron
node-loader
electron-debug
electron-devtools-installer
@types/electron-devtools-installer
electron-builder
> yarn remove electron node-loader electron-debug electron-devtools-installer @types/electron-devtools-installer electron-builder electron-updater electron-log
# or
> npm uninstall electron node-loader electron-debug electron-devtools-installer @types/electron-devtools-installer electron-builder electron-updater electron-log
- done
以上操作经实践暂无问题,如有问题请先查看控制台错误输出。
如果希望将主进程、渲染进程放置于同一目录(以
src
为例,渲染进程代码src/render
,主进程代码(src/main
),操作如下:
- 删除
tsconfig.json
中include
数组的main
目录配置,将src
替换为src/render
- 将
tsconfig.json
中的paths: { "~/*": ["./main/*"], "@/*": ["./src/*"] }
对象修改为paths: { "~/*": ["./src/main/*"], "@/*": ["./src/render/*"] }
src
目录中新建render
子目录,将src
目录中原有所有文件移动到src/render
目录- 将
main
目录移动到src
目录与render
目录同级 - 修改
.scripts/config/paths.js
相关配置,将src
修改为src/render
,将main
修改为src/main
- 修改
electron.config.js
文件相关目录指向 - done
- 主进程代码修改后如何才能像渲染进程代码一样热加载,而不是每次重新启动程序
- 添加 electron 安装包更新功能