配置
electronup cli 集成并内置了 vite , tsup , electron-builder ,并没有加以魔改,只是在其三之上做了一些预置配置,除了一些关键性的路径配置,您完全可以传入相同的参数将其覆盖,配置属于您自己的配置。
electronup cli 有且只导出了一个帮助开发者提供代码提示的 api :defineConfig,在编写 electronup.config.ts 时提供正确的引导。
electronup.config.ts
首先需要在项目根目录下创建 electronup.config.ts 文件,非根目录下的 electronup.config.ts 需要在运行时通过命令行参数指定路径。
关于项目中的资源路径问题,提升了配置层级,在最外层进行路径配置,当然不配置也可以,已经提供了默认路径,只需要创建对应目录就行。
renderDir
渲染进程入口目录,也就是 web 入口目录。
mainDir
主进程入口目录。
publicDir
静态资源目录。
libDir
动态库目录。
resourceDir
资源构建输出目录。就是
dev时的输出目录。
outDir
桌面端产物目录。就是
build时的输出目录。
TIP
以上路径都是基于根目录下, 最终会和根目录路径拼接, 以上路径在 vite tsup electron-builder 中配置不会生效。
vite
渲染进程构建程序。
electronup cli 中预置了 vite ,除以下几项配置无法直接覆盖,其余和 vite 配置无二。
base
可以覆盖,预置为
./。
该配置一般配合模板,如果需要改动需要同步配置 index.html 中的资源路径,(不推荐改动)。
build
该配置预置了两个选项。
minify- 不可覆盖,可通过命令行参数
--no-minify控制。
- 不可覆盖,可通过命令行参数
outDiroutDir只能通过外部的resourceDir配置项覆盖。
root
渲染进程根目录,也就是
index.html所在的目录。
root 只能通过外部的 renderDir 配置项覆盖。
publicDir
全局静态资源目录。
publicDir 只能通过外部的 publicDir 配置项覆盖。
tsup
用于构建主进程代码,预置配置已满足大部分开发,故此暴露了少量的配置项。
tsup 构建时,会同步注入用户配置的环境变量以保证双进程统一。
external
排除参与构建的 modules。 以数组的形式配置。
noExternal
总是参与构建的 modules。 以数组的形式配置。
electron-builder
预置配置皆可覆盖,路径类配置需要在外部配置。
electronup 中的 electron-builder 详细配置查看。
提示
命令行参数权重高于用户配置,请结合文档完成构建配置。
预置配置示例
以下配置是
template-react模板构建后生成的electronup-effective-config.yaml配置文件,仅供参考。
vite:
base: ./
plugins:
- - name: vite:react-babel
enforce: pre
- name: vite:react-refresh
enforce: pre
resolve:
alias:
"@": /Users/quiteer/Documents/GitHub/electronup/template/react-project/render
build:
minify: esbuild
outDir: /Users/quiteer/Documents/GitHub/electronup/template/react-project/dist/resource
root: render
publicDir: /Users/quiteer/Documents/GitHub/electronup/template/react-project/public
tsup:
minify: false
external:
- electron
entry:
electron: /Users/quiteer/Documents/GitHub/electronup/template/react-project/main/index.ts
outDir: dist/resource
watch: false
format: cjs
dts: false
clean: false
env:
VITE_HELLO: 你好!electronup!
VITE_MODE_TEXT: 这里是生产环境
NODE_ENV: production
builder:
targets: {}
config:
asar: true
appId: org.quiteer.electronup
productName: react-project
protocols:
name: react-project
schemes:
- deeplink
nsis:
oneClick: false
language: "2052"
perMachine: true
allowElevation: true
allowToChangeInstallationDirectory: true
runAfterFinish: true
createDesktopShortcut: true
createStartMenuShortcut: true
artifactName: react-project ${arch} Setup 1.0.0.${ext}
files:
- filter:
- dist/resource/**/*
extraFiles:
- filter:
- lib
directories:
output: dist/out
win:
icon: public/icon.png
target:
target: nsis
arch: ia32