Skip to content

Commit 0b19e95

Browse files
committed
chore: move @types deps to the ts_config target
Source code doesn't have to include any indication these 'ambient' types are required. However we can force users to be explicit in the tsconfig of which `@types` packages to include in compilation. This follows the locality principle, since the types weren't referenced in the sources, the deps dont belong on the ts_project.
1 parent cf28458 commit 0b19e95

File tree

8 files changed

+35
-15
lines changed

8 files changed

+35
-15
lines changed

frontend/next.js/BUILD.bazel

+6
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ ts_config(
1616
name = "tsconfig",
1717
src = "tsconfig.json",
1818
visibility = ["//visibility:public"],
19+
deps = [
20+
":node_modules/@types/is-even",
21+
":node_modules/@types/jest",
22+
":node_modules/@types/react",
23+
":node_modules/@types/react-dom",
24+
],
1925
)
2026

2127
next(

frontend/next.js/pages/BUILD.bazel

+1-4
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@ ts_project(
2020
visibility = ["//next.js:__subpackages__"],
2121
deps = [
2222
"//next.js:node_modules/@bazel-example/one",
23-
"//next.js:node_modules/@types/is-even",
24-
"//next.js:node_modules/@types/react",
25-
"//next.js:node_modules/@types/react-dom",
2623
"//next.js:node_modules/next",
2724
"//next.js/pages/api",
2825
],
@@ -38,7 +35,7 @@ ts_project(
3835
deps = [
3936
"//next.js:node_modules/@testing-library/jest-dom",
4037
"//next.js:node_modules/@testing-library/react",
41-
"//next.js:node_modules/@types/jest",
38+
"//next.js:node_modules/@types",
4239
"//next.js/pages",
4340
],
4441
)

frontend/next.js/tsconfig.json

+7-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@
1111
"moduleResolution": "node",
1212
"resolveJsonModule": true,
1313
"isolatedModules": true,
14-
"jsx": "react-jsx"
14+
"jsx": "react-jsx",
15+
"types": [
16+
"is-even",
17+
"jest",
18+
"react",
19+
"react-dom"
20+
]
1521
},
1622
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
1723
"exclude": ["node_modules"]

frontend/packages/one/BUILD.bazel

+12-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
load("@aspect_rules_js//npm:defs.bzl", "npm_package")
2-
load("@aspect_rules_ts//ts:defs.bzl", "ts_project")
2+
load("@aspect_rules_ts//ts:defs.bzl", "ts_config", "ts_project")
33
load("@npm//:defs.bzl", "npm_link_all_packages")
44

55
npm_link_all_packages(name = "node_modules")
66

7+
ts_config(
8+
name = "tsconfig",
9+
src = "tsconfig.json",
10+
# transpile time direct dependencies
11+
deps = [
12+
":node_modules/@types/is-odd",
13+
#":node_modules/@types/node",
14+
],
15+
)
16+
717
ts_project(
818
name = "one_ts",
919
srcs = ["src/main.ts"],
@@ -13,11 +23,7 @@ ts_project(
1323
],
1424
declaration = True,
1525
transpiler = "tsc",
16-
# transpile time direct dependencies
17-
deps = [
18-
":node_modules/@types/is-odd",
19-
"//next.js:node_modules/@types/node",
20-
],
26+
tsconfig = ":tsconfig",
2127
)
2228

2329
# make this library available via node_modules

frontend/packages/one/tsconfig.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
"compilerOptions": {
33
"declaration": true,
44
"esModuleInterop": true,
5-
5+
"types": [
6+
"is-odd"
7+
]
68
}
79
}

frontend/react/BUILD.bazel

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ ts_config(
2121
name = "tsconfig",
2222
src = "tsconfig.json",
2323
visibility = ["//visibility:public"],
24+
deps = [":node_modules/@types/react"],
2425
)
2526

2627
tsconfig_to_swcconfig.t2s(

frontend/react/src/BUILD.bazel

+1-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ ts_project(
2323
tsconfig = "//react:tsconfig",
2424
visibility = ["//react:__subpackages__"],
2525
deps = [
26-
"//react:node_modules/@types/react",
2726
"//react:node_modules/react",
2827
"//react:node_modules/react-dom",
2928
"//react:node_modules/vite-plugin-svgr",
@@ -43,7 +42,7 @@ ts_project(
4342
"//:node_modules/vitest",
4443
"//react:node_modules/@testing-library/jest-dom",
4544
"//react:node_modules/@testing-library/react",
46-
"//react:node_modules/@types/jest",
45+
"//react:node_modules/@types",
4746
],
4847
)
4948

frontend/react/tsconfig.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@
1414
"resolveJsonModule": true,
1515
"isolatedModules": true,
1616
"declaration": true,
17-
"jsx": "react-jsx"
17+
"jsx": "react-jsx",
18+
"types": [
19+
"react"
20+
]
1821
},
1922
"include": ["src"]
2023
}

0 commit comments

Comments
 (0)