Skip to content

Commit

Permalink
chore: output declaration files for neuroglancer packages (#576)
Browse files Browse the repository at this point in the history
* chore: output declaration files for neuroglancer when installed with NPM

Add --declaration flag to build-package.ts to optionally output typescript declaration files
Enable flag for npm prepare script

* fix: improve declarations by using tsconfig.json

* always generate declaration files when building packages

* remove unnecessary use of ts.createCompilerHost
  • Loading branch information
chrisj authored Jun 11, 2024
1 parent 5b304a1 commit f1fd3b6
Showing 1 changed file with 34 additions and 1 deletion.
35 changes: 34 additions & 1 deletion build_tools/build-package.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,24 @@ import fs from "node:fs/promises";
import path from "node:path";
import esbuild from "esbuild";
import { glob } from "glob";
import ts from "typescript";
import yargs from "yargs";

const rootDir = path.resolve(import.meta.dirname, "..");

function buildDeclarationFiles(
fileNames: string[],
options: ts.CompilerOptions,
): void {
options = {
...options,
declaration: true,
emitDeclarationOnly: true,
};
const program = ts.createProgram(fileNames, options);
program.emit();
}

async function buildPackage(options: { inplace?: boolean }) {
const { inplace = false } = options;

Expand Down Expand Up @@ -45,13 +59,32 @@ async function buildPackage(options: { inplace?: boolean }) {
nodir: true,
});

const entryPoints = typescriptSources.map((name) =>
path.resolve(srcDir, name),
);

await esbuild.build({
entryPoints: typescriptSources.map((name) => path.resolve(srcDir, name)),
entryPoints,
outbase: srcDir,
bundle: false,
outdir: libDir,
});

let compilerOptionsFromConfigFile: ts.CompilerOptions = {};
const configFileName = ts.findConfigFile("../", ts.sys.fileExists);
if (configFileName) {
const configFile = ts.readConfigFile(configFileName, ts.sys.readFile);
compilerOptionsFromConfigFile = ts.parseJsonConfigFileContent(
configFile.config,
ts.sys,
"./",
).options;
}
buildDeclarationFiles(entryPoints, {
...compilerOptionsFromConfigFile,
outDir: libDir,
});

const otherSources = await glob(["**/*.{css,js,html,wasm}"], {
cwd: srcDir,
nodir: true,
Expand Down

0 comments on commit f1fd3b6

Please sign in to comment.