11#!/usr/bin/env node
22
3- import ts , { BuildOptions } from "typescript" ;
4- import { build } from "esbuild" ;
3+ import ts from "typescript" ;
4+ import { build , BuildOptions as EsBuildOptions } from "esbuild" ;
55import cpy from "cpy" ;
66import path from "path" ;
77import rimraf from "rimraf" ;
@@ -58,27 +58,30 @@ function esBuildSourceMapOptions(tsConfig: TSConfig) {
5858
5959function getBuildMetadata ( userConfig : Config ) {
6060 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 ;
6775 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 ,
7681 outdir : outDir ,
7782 entryPoints : srcFiles ,
7883 sourcemap,
7984 target,
80- minify,
81- plugins,
8285 tsconfig : tsConfigFile ,
8386 format,
8487 } ;
@@ -88,13 +91,13 @@ function getBuildMetadata(userConfig: Config) {
8891 const assetsOptions = {
8992 baseDir : userConfig . assets ?. baseDir || "src" ,
9093 outDir : userConfig . assets ?. outDir || outDir ,
91- patterns : [ ...assetPatterns , ` !**/*.{ts,js,tsx,jsx}` ] ,
94+ patterns : [ ...assetPatterns , " !**/*.{ts,js,tsx,jsx}" ] ,
9295 } ;
9396
9497 return { outDir, esbuildOptions, assetsOptions } ;
9598}
9699
97- async function buildSourceFiles ( esbuildOptions : Partial < BuildOptions > ) {
100+ async function buildSourceFiles ( esbuildOptions : EsBuildOptions ) {
98101 return await build ( {
99102 bundle : false ,
100103 format : "cjs" ,
@@ -111,14 +114,12 @@ async function copyNonSourceFiles({
111114 patterns,
112115} : AssetsOptions ) {
113116 const relativeOutDir = path . relative ( baseDir , outDir ) ;
114- return await cpy ( patterns , relativeOutDir , {
115- cwd : baseDir ,
116- } ) ;
117+ return await cpy ( patterns , relativeOutDir , { cwd : baseDir } ) ;
117118}
118119
119120async function main ( ) {
120121 const configFilename = < string > (await argv)?.config || "etsc.config.js";
121- const clean = < boolean > (await argv)?.clean || false ;
122+ const clean = (await argv)?.clean;
122123 const config = await readUserConfig(path.resolve(cwd, configFilename));
123124
124125 const { outDir , esbuildOptions , assetsOptions } = getBuildMetadata(config);
0 commit comments