-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig.ts
47 lines (43 loc) · 1.04 KB
/
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
import { loadConfig } from "c12";
import * as compressing from "compressing";
import { resolve } from "node:path";
import { format } from "./format";
type Mode = Exclude<keyof typeof compressing, "gzip">;
export interface ZipConfig {
entries: string[];
name: string;
outDir: string;
mode: Mode;
overwrite: boolean;
date: string;
}
const ConfigDefaults: ZipConfig = {
entries: [],
name: "format:%entry.name",
outDir: ".",
mode: "zip",
overwrite: true,
date: "short",
};
export async function loadZipConfig(
overrides?: Partial<ZipConfig>
): Promise<ZipConfig> {
const { config } = await loadConfig<ZipConfig>({
name: "zip",
defaults: ConfigDefaults,
globalRc: true,
overrides: {
...(overrides as ZipConfig),
},
});
if (!config?.entries.length) {
config!.entries = ["dist"];
}
config!.entries = Array.from(
new Set(config?.entries.map((entry) => resolve(process.cwd(), entry)))
);
if (config?.name.startsWith("format:")) {
config.name = await format(config);
}
return config!;
}