-
Notifications
You must be signed in to change notification settings - Fork 0
/
tsup.config.ts
66 lines (55 loc) · 1.73 KB
/
tsup.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import { defineConfig, type Options } from 'tsup'
import path from 'path'
import rootPath from 'app-root-path'
const resolvePath = (...paths: string[]): string =>
path.resolve(...paths).replace(/\\/g, '/')
let envName: string
const createBuildConfigs = async (name: string): Promise<Options[]> => {
const basePath = `${__dirname}/${name}`.replace(/\\/g, '/') // eslint-disable-line n/no-path-concat
const jsBanner = `/*!
* Copyright (c) 2023 CoderPush. All rights reserved.
* Licensed under the MIT License. See LICENSE file in the project root for license information.
*/`
const configs: Options[] = []
const packageMain = 'index.ts'
const ignoredPatterns = [
'!node_modules/**',
`!${basePath}/node_modules`,
`!${basePath}/node_modules/**`,
`!${basePath}/dist`,
`!${basePath}/**/*.spec.ts`,
`!${basePath}/**/*.test.ts`,
`!${basePath}/tests/**`,
]
const cjsBaseConfig: Options = {
clean: true,
tsconfig: `${basePath}/tsconfig.json`,
format: ['cjs'],
external: [/^[^./D@]/], // only bundle entry modules and relative modules
outDir: rootPath.resolve(`dist/${name}`),
splitting: false,
dts: false,
minify: envName === 'production',
banner: {
js: jsBanner,
},
}
if (packageMain) {
const mainImportPath = resolvePath(basePath, packageMain)
configs.push({
...cjsBaseConfig,
entry: [mainImportPath, ...ignoredPatterns],
dts: false,
})
}
return configs
}
const packages = [
'electron',
'electron/preload',
]
export default defineConfig(async (options) => {
envName = options.env?.NODE_ENV || process.env.NODE_ENV || 'development'
const configs = await Promise.all(packages.map(createBuildConfigs))
return configs.flat()
})