Skip to content

Commit 3d885e8

Browse files
authored
fix(typescript): produce .d.ts as default output rather than empty (#2117)
This lets you type-check a ts_project(emit_declaration_only=True) just by building it (its default outputs) Fixes #2116
1 parent 4fe1a17 commit 3d885e8

5 files changed

Lines changed: 27 additions & 4 deletions

File tree

packages/typescript/internal/ts_project.bzl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,9 @@ def _ts_project_impl(ctx):
117117
outputs = json_outs + ctx.outputs.js_outs + ctx.outputs.map_outs + ctx.outputs.typings_outs + ctx.outputs.typing_maps_outs
118118
if ctx.outputs.buildinfo_out:
119119
outputs.append(ctx.outputs.buildinfo_out)
120-
runtime_outputs = depset(json_outs + ctx.outputs.js_outs + ctx.outputs.map_outs)
120+
runtime_outputs = json_outs + ctx.outputs.js_outs + ctx.outputs.map_outs
121121
typings_outputs = ctx.outputs.typings_outs + ctx.outputs.typing_maps_outs + [s for s in ctx.files.srcs if s.path.endswith(".d.ts")]
122+
default_outputs_depset = depset(runtime_outputs) if len(runtime_outputs) else depset(typings_outputs)
122123

123124
if len(outputs) > 0:
124125
run_node(
@@ -140,14 +141,14 @@ def _ts_project_impl(ctx):
140141
# Only the JavaScript outputs are intended for use in non-TS-aware
141142
# dependents.
142143
DefaultInfo(
143-
files = runtime_outputs,
144+
files = default_outputs_depset,
144145
runfiles = ctx.runfiles(
145-
transitive_files = runtime_outputs,
146+
transitive_files = default_outputs_depset,
146147
collect_default = True,
147148
),
148149
),
149150
js_module_info(
150-
sources = runtime_outputs,
151+
sources = depset(runtime_outputs),
151152
deps = ctx.attr.deps,
152153
),
153154
_TsConfigInfo(tsconfigs = depset([ctx.file.tsconfig] + ctx.files.extends, transitive = [
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
load("@build_bazel_rules_nodejs//:index.bzl", "generated_file_test")
2+
load("//packages/typescript:index.bzl", "ts_project")
3+
4+
ts_project(
5+
declaration = True,
6+
emit_declaration_only = True,
7+
)
8+
9+
generated_file_test(
10+
name = "test",
11+
src = "a.d.ts_",
12+
generated = ":tsconfig",
13+
)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export declare const a: string;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const a: string = '';
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"compilerOptions": {
3+
"declaration": true,
4+
"emitDeclarationOnly": true,
5+
"types": []
6+
}
7+
}

0 commit comments

Comments
 (0)