electronup 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +346 -346
- package/dist/bin/electronup.js +41 -50653
- package/dist/client/index.d.mts +71 -0
- package/dist/client/index.d.ts +9 -11
- package/dist/client/index.js +14 -0
- package/dist/client/index.mjs +7 -0
- package/package.json +10 -14
package/README.md
CHANGED
|
@@ -1,346 +1,346 @@
|
|
|
1
|
-
# electronup
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
> 融合构建 electron 应用需要的构建工具,保留原有配置习惯的命令行工具
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
## 插件前置
|
|
9
|
-
|
|
10
|
-
```json
|
|
11
|
-
{
|
|
12
|
-
"peerDependencies": {
|
|
13
|
-
"@types/node": ">= 16",
|
|
14
|
-
"electron": ">= 20",
|
|
15
|
-
"vue": ">= 3"
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
## 安装
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
npm i @quiteer/electronup -D
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
yarn add @quiteer/electronup -D
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
pnpm add @quiteer/electronup -D
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
## 使用
|
|
37
|
-
|
|
38
|
-
- 查看命令行指令
|
|
39
|
-
|
|
40
|
-
- `electornup -h`
|
|
41
|
-
|
|
42
|
-
- `electornup build -h`
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- 查看命令行版本
|
|
46
|
-
|
|
47
|
-
- `electornup -v`
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
- 开发环境
|
|
51
|
-
|
|
52
|
-
- `electornup`
|
|
53
|
-
|
|
54
|
-
- `electornup dev`
|
|
55
|
-
|
|
56
|
-
- 指定配置文件 `electornup [config file]`
|
|
57
|
-
|
|
58
|
-
- 指定配置文件 `electornup dev [config file]`
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
- 构建打包
|
|
62
|
-
|
|
63
|
-
- `electornup build`
|
|
64
|
-
|
|
65
|
-
- 指定配置文件 `electornup build [config file]`
|
|
66
|
-
|
|
67
|
-
- 开启选项式构建 `electornup build -o` 或 `electornup build --option`
|
|
68
|
-
|
|
69
|
-
- 输出选项默认当前平台架构
|
|
70
|
-
|
|
71
|
-
- 指定平台 `--win` ,`--mac` ,`--linux`
|
|
72
|
-
|
|
73
|
-
- 指定架构 `--ia32` ,`--x64` ,`--arm64`
|
|
74
|
-
|
|
75
|
-
- 可不指定平台架构版本, 默认为本机当前平台架构版本
|
|
76
|
-
|
|
77
|
-
## 内置的依赖
|
|
78
|
-
|
|
79
|
-
> 部分依赖已内置 无需重复安装 (开发此脚手架的目的也是给项目 package 瘦瘦身)
|
|
80
|
-
|
|
81
|
-
```json
|
|
82
|
-
{
|
|
83
|
-
"dependencies": {
|
|
84
|
-
"@quiteer/parser-config": "^1.0.3",
|
|
85
|
-
"cac": "^6.7.14",
|
|
86
|
-
"dotenv": "^16.0.3",
|
|
87
|
-
"electron-builder": "^23.6.0",
|
|
88
|
-
"fs-extra": "^10.1.0",
|
|
89
|
-
"inquirer": "8.2.5",
|
|
90
|
-
"portfinder": "^1.0.32",
|
|
91
|
-
"rimraf": "^3.0.2",
|
|
92
|
-
"tsup": "^6.7.0",
|
|
93
|
-
"typescript": "^5.0.4",
|
|
94
|
-
"vite": "^4.
|
|
95
|
-
"yaml": "^2.2.1"
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### cli配置项
|
|
101
|
-
|
|
102
|
-
```ts
|
|
103
|
-
import type { Configuration } from 'electron-builder'
|
|
104
|
-
import type { AliasOptions, PluginOption, ResolveOptions, UserConfig } from 'vite'
|
|
105
|
-
import type { Options } from 'tsup'
|
|
106
|
-
|
|
107
|
-
interface ViteConfig {
|
|
108
|
-
resolve?: ResolveOptions & {
|
|
109
|
-
alias?: AliasOptions
|
|
110
|
-
}
|
|
111
|
-
plugins?: PluginOption[]
|
|
112
|
-
viteOptions?: Omit<UserConfig, 'plugins' | 'resolve' | 'publicDir'>
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
interface TsupConfig {
|
|
116
|
-
entry?: string[] | Record<string, string>
|
|
117
|
-
target?: string | string[]
|
|
118
|
-
minify?: boolean
|
|
119
|
-
external?: (string | RegExp)[]
|
|
120
|
-
noExternal?: (string | RegExp)[]
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
interface BuilderConfig extends Configuration { }
|
|
124
|
-
|
|
125
|
-
interface ElectronupConfig {
|
|
126
|
-
viteConfig?: ViteConfig
|
|
127
|
-
tsupConfig?: TsupConfig
|
|
128
|
-
preloadTsup?: Options | Options[]
|
|
129
|
-
builderConfig: BuilderConfig
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* 渲染进程入口目录
|
|
133
|
-
* @default 'render'
|
|
134
|
-
*/
|
|
135
|
-
renderDir?: string
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* 主进程入口目录
|
|
139
|
-
* @default 'main'
|
|
140
|
-
*/
|
|
141
|
-
mainDir?: string
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* 静态资源目录
|
|
145
|
-
* @default 'public'
|
|
146
|
-
*/
|
|
147
|
-
publicDir?: string
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* 动态库目录
|
|
151
|
-
* @default 'lib'
|
|
152
|
-
*/
|
|
153
|
-
libDir?: string
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* 资源构建输出目录
|
|
157
|
-
* @default 'dist/resource'
|
|
158
|
-
*/
|
|
159
|
-
resourceDir?: string
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* electron-builder 输出目录
|
|
163
|
-
* @default 'dist/out'
|
|
164
|
-
*/
|
|
165
|
-
outDir?: string
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
interface ConfigEnv {
|
|
169
|
-
command: 'build' | 'serve'
|
|
170
|
-
root: string
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
type ElectronupConfigFn = (env: ConfigEnv) => ElectronupConfig
|
|
174
|
-
type UserElectronupConfig = ElectronupConfig | ElectronupConfigFn
|
|
175
|
-
|
|
176
|
-
declare const defineConfig: (config: UserElectronupConfig) => UserElectronupConfig
|
|
177
|
-
|
|
178
|
-
export { BuilderConfig, ConfigEnv, ElectronupConfig, TsupConfig, ViteConfig, defineConfig }
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
#### 获取类型提示
|
|
182
|
-
|
|
183
|
-
引入导出的 api 即可获取类型提示
|
|
184
|
-
|
|
185
|
-
## 环境变量配置
|
|
186
|
-
|
|
187
|
-
根目录下的 `.env` 文件在任何环境下都会注入到业务代码中
|
|
188
|
-
|
|
189
|
-
### command
|
|
190
|
-
|
|
191
|
-
目前 `command` 命令仅支持 `dev` 及 `build`
|
|
192
|
-
|
|
193
|
-
`dev` 指令下向 `process.env` 中注入 `NODE_ENV` 字段 为 `develpoment`
|
|
194
|
-
|
|
195
|
-
`build` 指令下向 `process.env` 中注入 `NODE_ENV` 字段 为 `production`
|
|
196
|
-
|
|
197
|
-
双进程下区分环境略有不同 , 主进程代码中直接访问 `process.env` 上的 `NODE_ENV` 即可,渲染进程中访问 `vite` 提供的 `import.meta.env` 获取
|
|
198
|
-
|
|
199
|
-
```typescript
|
|
200
|
-
// main.ts
|
|
201
|
-
// dev
|
|
202
|
-
console.log('NODE_ENV', process.env.NODE_ENV) // NODE_ENV development
|
|
203
|
-
|
|
204
|
-
// build
|
|
205
|
-
console.log('NODE_ENV', process.env.NODE_ENV) // NODE_ENV production
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
```typescript
|
|
209
|
-
// render.ts
|
|
210
|
-
// dev
|
|
211
|
-
console.log('isDev', import.meta.env.DEV) // isDev true
|
|
212
|
-
|
|
213
|
-
// build
|
|
214
|
-
console.log('isDev', import.meta.env.DEV) // isDev fasle
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
### mode
|
|
220
|
-
|
|
221
|
-
通过添加命令行指令 `-m xxx | -mode xxx` 指定加载环境变量文件以满足不同环境下的不同环境变量。
|
|
222
|
-
|
|
223
|
-
`mode` 指令传入的 `mode` 字符串需与根目录下的 `env` 文件一致。 规则如下
|
|
224
|
-
|
|
225
|
-
```shell
|
|
226
|
-
electronup -m test
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
命令行运行后根据 `mode` 参数加载根目录下的 `.env.test` 环境变量文件
|
|
230
|
-
|
|
231
|
-
即 `electronup -m test`
|
|
232
|
-
|
|
233
|
-
`.env`
|
|
234
|
-
|
|
235
|
-
`.env.test`
|
|
236
|
-
|
|
237
|
-
不传 mode 参数,默认根据环境区分加载环境变量。
|
|
238
|
-
|
|
239
|
-
`electronup dev`
|
|
240
|
-
|
|
241
|
-
`.env`
|
|
242
|
-
|
|
243
|
-
`.env.devlepoment`
|
|
244
|
-
|
|
245
|
-
`electronup build`
|
|
246
|
-
|
|
247
|
-
`.env`
|
|
248
|
-
|
|
249
|
-
`.env.production`
|
|
250
|
-
|
|
251
|
-
当然也可通过传入 mode 参数使 dev 环境加载 production 的环境变量。
|
|
252
|
-
|
|
253
|
-
`electronup dev -m production`
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
#### 文件命名
|
|
258
|
-
|
|
259
|
-
`.env`
|
|
260
|
-
|
|
261
|
-
`.env.development`
|
|
262
|
-
|
|
263
|
-
`.env.production`
|
|
264
|
-
|
|
265
|
-
`.env.test`
|
|
266
|
-
|
|
267
|
-
`.env.staging`
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
### 预置配置
|
|
272
|
-
|
|
273
|
-
可自定义配置覆盖默认配置。
|
|
274
|
-
|
|
275
|
-
#### vite
|
|
276
|
-
|
|
277
|
-
- `base` : `./`
|
|
278
|
-
|
|
279
|
-
- `mode` : `development` | `production`
|
|
280
|
-
|
|
281
|
-
- `root` : `render`
|
|
282
|
-
|
|
283
|
-
- `publicDir` : `public`
|
|
284
|
-
|
|
285
|
-
- `server` : `{ host: '0.0.0.0' }`
|
|
286
|
-
|
|
287
|
-
- `build` :
|
|
288
|
-
|
|
289
|
-
```ts
|
|
290
|
-
{
|
|
291
|
-
outDir: 'dist',
|
|
292
|
-
target: 'esnext',
|
|
293
|
-
minify: true,
|
|
294
|
-
reportCompressedSize: false,
|
|
295
|
-
emptyOutDir: true
|
|
296
|
-
}
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
所有选项皆可通过 `viteOptions` 覆盖
|
|
300
|
-
|
|
301
|
-
#### tsup配置选项
|
|
302
|
-
|
|
303
|
-
- `external` : `['electorn']`
|
|
304
|
-
- `target` : `node14`
|
|
305
|
-
- `noExternal` : `[]`
|
|
306
|
-
|
|
307
|
-
##### 路径别名
|
|
308
|
-
|
|
309
|
-
直接在项目中配置 `tsconfig.json` 的 `paths` 选项即可在主进程代码中使用路径别名。
|
|
310
|
-
|
|
311
|
-
#### electron-builder
|
|
312
|
-
|
|
313
|
-
可全部覆盖,默认配置如下:
|
|
314
|
-
|
|
315
|
-
```typescript
|
|
316
|
-
{
|
|
317
|
-
asar: true,
|
|
318
|
-
appId: 'org.quiteer.electronup',
|
|
319
|
-
productName: packages.name,
|
|
320
|
-
protocols: {
|
|
321
|
-
name: packages.name,
|
|
322
|
-
schemes: ['deeplink']
|
|
323
|
-
},
|
|
324
|
-
nsis: {
|
|
325
|
-
oneClick: false,
|
|
326
|
-
language: '2052',
|
|
327
|
-
perMachine: true,
|
|
328
|
-
allowElevation: true,
|
|
329
|
-
allowToChangeInstallationDirectory: true,
|
|
330
|
-
runAfterFinish: true,
|
|
331
|
-
createDesktopShortcut: true,
|
|
332
|
-
createStartMenuShortcut: true,
|
|
333
|
-
artifactName: `${packages.name} \${arch} Setup ${packages.version}.\${ext}`
|
|
334
|
-
},
|
|
335
|
-
files: [`${allConfig.resourceDir || DefaultDirs.resourceDir}/**/*`],
|
|
336
|
-
extraFiles: [allConfig.libDir || DefaultDirs.libDir],
|
|
337
|
-
directories: {
|
|
338
|
-
output: allConfig.outDir || config.directories?.output || DefaultDirs.outDir
|
|
339
|
-
},
|
|
340
|
-
// ...传入同名参数即可完成覆盖
|
|
341
|
-
}
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
## 示例
|
|
345
|
-
|
|
346
|
-
> https://github.com/TaiAiAc/electron-quiet-monorepo/tree/main/experiment/electronup-test
|
|
1
|
+
# electronup
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
> 融合构建 electron 应用需要的构建工具,保留原有配置习惯的命令行工具
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## 插件前置
|
|
9
|
+
|
|
10
|
+
```json
|
|
11
|
+
{
|
|
12
|
+
"peerDependencies": {
|
|
13
|
+
"@types/node": ">= 16",
|
|
14
|
+
"electron": ">= 20",
|
|
15
|
+
"vue": ">= 3"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
## 安装
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm i @quiteer/electronup -D
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
yarn add @quiteer/electronup -D
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pnpm add @quiteer/electronup -D
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## 使用
|
|
37
|
+
|
|
38
|
+
- 查看命令行指令
|
|
39
|
+
|
|
40
|
+
- `electornup -h`
|
|
41
|
+
|
|
42
|
+
- `electornup build -h`
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
- 查看命令行版本
|
|
46
|
+
|
|
47
|
+
- `electornup -v`
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
- 开发环境
|
|
51
|
+
|
|
52
|
+
- `electornup`
|
|
53
|
+
|
|
54
|
+
- `electornup dev`
|
|
55
|
+
|
|
56
|
+
- 指定配置文件 `electornup [config file]`
|
|
57
|
+
|
|
58
|
+
- 指定配置文件 `electornup dev [config file]`
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
- 构建打包
|
|
62
|
+
|
|
63
|
+
- `electornup build`
|
|
64
|
+
|
|
65
|
+
- 指定配置文件 `electornup build [config file]`
|
|
66
|
+
|
|
67
|
+
- 开启选项式构建 `electornup build -o` 或 `electornup build --option`
|
|
68
|
+
|
|
69
|
+
- 输出选项默认当前平台架构
|
|
70
|
+
|
|
71
|
+
- 指定平台 `--win` ,`--mac` ,`--linux`
|
|
72
|
+
|
|
73
|
+
- 指定架构 `--ia32` ,`--x64` ,`--arm64`
|
|
74
|
+
|
|
75
|
+
- 可不指定平台架构版本, 默认为本机当前平台架构版本
|
|
76
|
+
|
|
77
|
+
## 内置的依赖
|
|
78
|
+
|
|
79
|
+
> 部分依赖已内置 无需重复安装 (开发此脚手架的目的也是给项目 package 瘦瘦身)
|
|
80
|
+
|
|
81
|
+
```json
|
|
82
|
+
{
|
|
83
|
+
"dependencies": {
|
|
84
|
+
"@quiteer/parser-config": "^1.0.3",
|
|
85
|
+
"cac": "^6.7.14",
|
|
86
|
+
"dotenv": "^16.0.3",
|
|
87
|
+
"electron-builder": "^23.6.0",
|
|
88
|
+
"fs-extra": "^10.1.0",
|
|
89
|
+
"inquirer": "8.2.5",
|
|
90
|
+
"portfinder": "^1.0.32",
|
|
91
|
+
"rimraf": "^3.0.2",
|
|
92
|
+
"tsup": "^6.7.0",
|
|
93
|
+
"typescript": "^5.0.4",
|
|
94
|
+
"vite": "^4.4.9",
|
|
95
|
+
"yaml": "^2.2.1"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### cli配置项
|
|
101
|
+
|
|
102
|
+
```ts
|
|
103
|
+
import type { Configuration } from 'electron-builder'
|
|
104
|
+
import type { AliasOptions, PluginOption, ResolveOptions, UserConfig } from 'vite'
|
|
105
|
+
import type { Options } from 'tsup'
|
|
106
|
+
|
|
107
|
+
interface ViteConfig {
|
|
108
|
+
resolve?: ResolveOptions & {
|
|
109
|
+
alias?: AliasOptions
|
|
110
|
+
}
|
|
111
|
+
plugins?: PluginOption[]
|
|
112
|
+
viteOptions?: Omit<UserConfig, 'plugins' | 'resolve' | 'publicDir'>
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
interface TsupConfig {
|
|
116
|
+
entry?: string[] | Record<string, string>
|
|
117
|
+
target?: string | string[]
|
|
118
|
+
minify?: boolean
|
|
119
|
+
external?: (string | RegExp)[]
|
|
120
|
+
noExternal?: (string | RegExp)[]
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
interface BuilderConfig extends Configuration { }
|
|
124
|
+
|
|
125
|
+
interface ElectronupConfig {
|
|
126
|
+
viteConfig?: ViteConfig
|
|
127
|
+
tsupConfig?: TsupConfig
|
|
128
|
+
preloadTsup?: Options | Options[]
|
|
129
|
+
builderConfig: BuilderConfig
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* 渲染进程入口目录
|
|
133
|
+
* @default 'render'
|
|
134
|
+
*/
|
|
135
|
+
renderDir?: string
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* 主进程入口目录
|
|
139
|
+
* @default 'main'
|
|
140
|
+
*/
|
|
141
|
+
mainDir?: string
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* 静态资源目录
|
|
145
|
+
* @default 'public'
|
|
146
|
+
*/
|
|
147
|
+
publicDir?: string
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* 动态库目录
|
|
151
|
+
* @default 'lib'
|
|
152
|
+
*/
|
|
153
|
+
libDir?: string
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* 资源构建输出目录
|
|
157
|
+
* @default 'dist/resource'
|
|
158
|
+
*/
|
|
159
|
+
resourceDir?: string
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* electron-builder 输出目录
|
|
163
|
+
* @default 'dist/out'
|
|
164
|
+
*/
|
|
165
|
+
outDir?: string
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
interface ConfigEnv {
|
|
169
|
+
command: 'build' | 'serve'
|
|
170
|
+
root: string
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
type ElectronupConfigFn = (env: ConfigEnv) => ElectronupConfig
|
|
174
|
+
type UserElectronupConfig = ElectronupConfig | ElectronupConfigFn
|
|
175
|
+
|
|
176
|
+
declare const defineConfig: (config: UserElectronupConfig) => UserElectronupConfig
|
|
177
|
+
|
|
178
|
+
export { BuilderConfig, ConfigEnv, ElectronupConfig, TsupConfig, ViteConfig, defineConfig }
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
#### 获取类型提示
|
|
182
|
+
|
|
183
|
+
引入导出的 api 即可获取类型提示
|
|
184
|
+
|
|
185
|
+
## 环境变量配置
|
|
186
|
+
|
|
187
|
+
根目录下的 `.env` 文件在任何环境下都会注入到业务代码中
|
|
188
|
+
|
|
189
|
+
### command
|
|
190
|
+
|
|
191
|
+
目前 `command` 命令仅支持 `dev` 及 `build`
|
|
192
|
+
|
|
193
|
+
`dev` 指令下向 `process.env` 中注入 `NODE_ENV` 字段 为 `develpoment`
|
|
194
|
+
|
|
195
|
+
`build` 指令下向 `process.env` 中注入 `NODE_ENV` 字段 为 `production`
|
|
196
|
+
|
|
197
|
+
双进程下区分环境略有不同 , 主进程代码中直接访问 `process.env` 上的 `NODE_ENV` 即可,渲染进程中访问 `vite` 提供的 `import.meta.env` 获取
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
// main.ts
|
|
201
|
+
// dev
|
|
202
|
+
console.log('NODE_ENV', process.env.NODE_ENV) // NODE_ENV development
|
|
203
|
+
|
|
204
|
+
// build
|
|
205
|
+
console.log('NODE_ENV', process.env.NODE_ENV) // NODE_ENV production
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
```typescript
|
|
209
|
+
// render.ts
|
|
210
|
+
// dev
|
|
211
|
+
console.log('isDev', import.meta.env.DEV) // isDev true
|
|
212
|
+
|
|
213
|
+
// build
|
|
214
|
+
console.log('isDev', import.meta.env.DEV) // isDev fasle
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
### mode
|
|
220
|
+
|
|
221
|
+
通过添加命令行指令 `-m xxx | -mode xxx` 指定加载环境变量文件以满足不同环境下的不同环境变量。
|
|
222
|
+
|
|
223
|
+
`mode` 指令传入的 `mode` 字符串需与根目录下的 `env` 文件一致。 规则如下
|
|
224
|
+
|
|
225
|
+
```shell
|
|
226
|
+
electronup -m test
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
命令行运行后根据 `mode` 参数加载根目录下的 `.env.test` 环境变量文件
|
|
230
|
+
|
|
231
|
+
即 `electronup -m test`
|
|
232
|
+
|
|
233
|
+
`.env`
|
|
234
|
+
|
|
235
|
+
`.env.test`
|
|
236
|
+
|
|
237
|
+
不传 mode 参数,默认根据环境区分加载环境变量。
|
|
238
|
+
|
|
239
|
+
`electronup dev`
|
|
240
|
+
|
|
241
|
+
`.env`
|
|
242
|
+
|
|
243
|
+
`.env.devlepoment`
|
|
244
|
+
|
|
245
|
+
`electronup build`
|
|
246
|
+
|
|
247
|
+
`.env`
|
|
248
|
+
|
|
249
|
+
`.env.production`
|
|
250
|
+
|
|
251
|
+
当然也可通过传入 mode 参数使 dev 环境加载 production 的环境变量。
|
|
252
|
+
|
|
253
|
+
`electronup dev -m production`
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
#### 文件命名
|
|
258
|
+
|
|
259
|
+
`.env`
|
|
260
|
+
|
|
261
|
+
`.env.development`
|
|
262
|
+
|
|
263
|
+
`.env.production`
|
|
264
|
+
|
|
265
|
+
`.env.test`
|
|
266
|
+
|
|
267
|
+
`.env.staging`
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
### 预置配置
|
|
272
|
+
|
|
273
|
+
可自定义配置覆盖默认配置。
|
|
274
|
+
|
|
275
|
+
#### vite
|
|
276
|
+
|
|
277
|
+
- `base` : `./`
|
|
278
|
+
|
|
279
|
+
- `mode` : `development` | `production`
|
|
280
|
+
|
|
281
|
+
- `root` : `render`
|
|
282
|
+
|
|
283
|
+
- `publicDir` : `public`
|
|
284
|
+
|
|
285
|
+
- `server` : `{ host: '0.0.0.0' }`
|
|
286
|
+
|
|
287
|
+
- `build` :
|
|
288
|
+
|
|
289
|
+
```ts
|
|
290
|
+
{
|
|
291
|
+
outDir: 'dist',
|
|
292
|
+
target: 'esnext',
|
|
293
|
+
minify: true,
|
|
294
|
+
reportCompressedSize: false,
|
|
295
|
+
emptyOutDir: true
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
所有选项皆可通过 `viteOptions` 覆盖
|
|
300
|
+
|
|
301
|
+
#### tsup配置选项
|
|
302
|
+
|
|
303
|
+
- `external` : `['electorn']`
|
|
304
|
+
- `target` : `node14`
|
|
305
|
+
- `noExternal` : `[]`
|
|
306
|
+
|
|
307
|
+
##### 路径别名
|
|
308
|
+
|
|
309
|
+
直接在项目中配置 `tsconfig.json` 的 `paths` 选项即可在主进程代码中使用路径别名。
|
|
310
|
+
|
|
311
|
+
#### electron-builder
|
|
312
|
+
|
|
313
|
+
可全部覆盖,默认配置如下:
|
|
314
|
+
|
|
315
|
+
```typescript
|
|
316
|
+
{
|
|
317
|
+
asar: true,
|
|
318
|
+
appId: 'org.quiteer.electronup',
|
|
319
|
+
productName: packages.name,
|
|
320
|
+
protocols: {
|
|
321
|
+
name: packages.name,
|
|
322
|
+
schemes: ['deeplink']
|
|
323
|
+
},
|
|
324
|
+
nsis: {
|
|
325
|
+
oneClick: false,
|
|
326
|
+
language: '2052',
|
|
327
|
+
perMachine: true,
|
|
328
|
+
allowElevation: true,
|
|
329
|
+
allowToChangeInstallationDirectory: true,
|
|
330
|
+
runAfterFinish: true,
|
|
331
|
+
createDesktopShortcut: true,
|
|
332
|
+
createStartMenuShortcut: true,
|
|
333
|
+
artifactName: `${packages.name} \${arch} Setup ${packages.version}.\${ext}`
|
|
334
|
+
},
|
|
335
|
+
files: [`${allConfig.resourceDir || DefaultDirs.resourceDir}/**/*`],
|
|
336
|
+
extraFiles: [allConfig.libDir || DefaultDirs.libDir],
|
|
337
|
+
directories: {
|
|
338
|
+
output: allConfig.outDir || config.directories?.output || DefaultDirs.outDir
|
|
339
|
+
},
|
|
340
|
+
// ...传入同名参数即可完成覆盖
|
|
341
|
+
}
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
## 示例
|
|
345
|
+
|
|
346
|
+
> https://github.com/TaiAiAc/electron-quiet-monorepo/tree/main/experiment/electronup-test
|