1
1
#!/usr/bin/env node
2
2
3
- import ts , { BuildOptions } from "typescript" ;
4
- import { build } from "esbuild" ;
3
+ import ts from "typescript" ;
4
+ import { build , BuildOptions as EsBuildOptions } from "esbuild" ;
5
5
import cpy from "cpy" ;
6
6
import path from "path" ;
7
7
import rimraf from "rimraf" ;
@@ -58,27 +58,30 @@ function esBuildSourceMapOptions(tsConfig: TSConfig) {
58
58
59
59
function getBuildMetadata ( userConfig : Config ) {
60
60
const { tsConfig, tsConfigFile } = getTSConfig ( userConfig . tsConfigFile ) ;
61
-
62
- const outDir = userConfig . outDir || tsConfig . options . outDir || "dist" ;
63
-
64
- const esbuildEntryPoints = userConfig . esbuild ?. entryPoints || [ ] ;
65
- const srcFiles = [ ...tsConfig . fileNames , ...esbuildEntryPoints ] ;
66
- const sourcemap = esBuildSourceMapOptions ( tsConfig ) ;
61
+ const esbuildConfig = userConfig . esbuild || { } ;
62
+
63
+ const outDir =
64
+ userConfig . outDir ||
65
+ tsConfig . options . outDir ||
66
+ esbuildConfig . outdir ||
67
+ "dist" ;
68
+
69
+ const srcFiles = [
70
+ ...tsConfig . fileNames ,
71
+ ...( ( esbuildConfig . entryPoints as string [ ] ) ?? [ ] ) ,
72
+ ] ;
73
+ const sourcemap =
74
+ esBuildSourceMapOptions ( tsConfig ) || userConfig . esbuild ?. sourcemap ;
67
75
const target =
68
- userConfig . esbuild ?. target ||
69
- tsConfig ?. raw ?. compilerOptions ?. target ||
70
- "es6" ;
71
- const minify = userConfig . esbuild ?. minify || false ;
72
- const plugins = userConfig . esbuild ?. plugins || [ ] ;
73
- const format = userConfig . esbuild ?. format || "cjs" ;
74
-
75
- const esbuildOptions : BuildOptions = {
76
+ tsConfig ?. raw ?. compilerOptions ?. target || esbuildConfig ?. target || "es2015" ;
77
+ const format = esbuildConfig ?. format || "cjs" ;
78
+
79
+ const esbuildOptions : EsBuildOptions = {
80
+ ...userConfig . esbuild ,
76
81
outdir : outDir ,
77
82
entryPoints : srcFiles ,
78
83
sourcemap,
79
84
target,
80
- minify,
81
- plugins,
82
85
tsconfig : tsConfigFile ,
83
86
format,
84
87
} ;
@@ -88,13 +91,13 @@ function getBuildMetadata(userConfig: Config) {
88
91
const assetsOptions = {
89
92
baseDir : userConfig . assets ?. baseDir || "src" ,
90
93
outDir : userConfig . assets ?. outDir || outDir ,
91
- patterns : [ ...assetPatterns , ` !**/*.{ts,js,tsx,jsx}` ] ,
94
+ patterns : [ ...assetPatterns , " !**/*.{ts,js,tsx,jsx}" ] ,
92
95
} ;
93
96
94
97
return { outDir, esbuildOptions, assetsOptions } ;
95
98
}
96
99
97
- async function buildSourceFiles ( esbuildOptions : Partial < BuildOptions > ) {
100
+ async function buildSourceFiles ( esbuildOptions : EsBuildOptions ) {
98
101
return await build ( {
99
102
bundle : false ,
100
103
format : "cjs" ,
@@ -111,14 +114,12 @@ async function copyNonSourceFiles({
111
114
patterns,
112
115
} : AssetsOptions ) {
113
116
const relativeOutDir = path . relative ( baseDir , outDir ) ;
114
- return await cpy ( patterns , relativeOutDir , {
115
- cwd : baseDir ,
116
- } ) ;
117
+ return await cpy ( patterns , relativeOutDir , { cwd : baseDir } ) ;
117
118
}
118
119
119
120
async function main ( ) {
120
121
const configFilename = < string > (await argv)?.config || "etsc.config.js";
121
- const clean = < boolean > (await argv)?.clean || false ;
122
+ const clean = (await argv)?.clean;
122
123
const config = await readUserConfig(path.resolve(cwd, configFilename));
123
124
124
125
const { outDir , esbuildOptions , assetsOptions } = getBuildMetadata(config);
0 commit comments