scripts/esbuild/getCompilerOptions.js (40 lines of code) (raw):

const { createHash } = require('crypto'); const { resolve } = require('path'); const ts = require('typescript'); function getCompilerOptions(opts) { const compilerOptions = ts.convertCompilerOptionsFromJson( opts.tsconfig.compilerOptions, process.cwd(), ).options; compilerOptions.declaration = true; compilerOptions.emitDeclarationOnly = true; compilerOptions.declarationDir = compilerOptions.baseUrl + '/' + opts.esbuildOptions.outdir; if (opts.willBundleDeclarations) { compilerOptions.declarationDir = resolve( compilerOptions.declarationDir, 'dts-prebundle', ); } if (compilerOptions.incremental && !compilerOptions.tsBuildInfoFile) { const configHash = createHash('sha256') .update( JSON.stringify({ compilerOptions, __buildContext: opts.pluginOptions?.__buildContext, }), ) .digest('hex'); const cacheDir = resolve( require.resolve('esbuild/package.json'), '../../.cache/esbuild-plugin-d.ts', ); compilerOptions.tsBuildInfoFile = resolve( opts.pluginOptions.buildInfoDir ?? cacheDir, `esbuild-plugin-dts-${configHash}.tsbuildinfo`, ); } compilerOptions.listEmittedFiles = true; return compilerOptions; } module.exports = { getCompilerOptions };