Skip to content

Commit 3cfbd4a

Browse files
authored
feat: allow definition of alternative typescript repositories (#675)
1 parent d1f0efb commit 3cfbd4a

File tree

7 files changed

+31
-5
lines changed

7 files changed

+31
-5
lines changed

docs/repositories.md

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/external_dep/BUILD

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,16 @@ ts_project(
1212
visibility = ["//visibility:public"],
1313
)
1414

15+
# Demonstrate how to use a different typescript where required
16+
# Picks up TypeScript 3.9.9 defined in MODULE.bazel
17+
ts_project(
18+
name = "lib.ts3",
19+
srcs = ["lib.ts"],
20+
composite = True,
21+
out_dir = "ts3_out",
22+
tsc = "@npm_typescript3//:tsc",
23+
)
24+
1525
build_test(
1626
name = "test",
1727
targets = [":lib"],

e2e/external_dep/MODULE.bazel

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,10 @@ bazel_dep(name = "bazel_skylib", version = "1.5.0", dev_dependency = True)
1616

1717
rules_ts_ext = use_extension("@aspect_rules_ts//ts:extensions.bzl", "ext", dev_dependency = True)
1818
rules_ts_ext.deps()
19-
use_repo(rules_ts_ext, "npm_typescript")
19+
20+
# Example demonstrating that you can also have a second typescript version
21+
rules_ts_ext.deps(
22+
name = "npm_typescript3",
23+
ts_version = "3.9.9",
24+
)
25+
use_repo(rules_ts_ext, "npm_typescript", "npm_typescript3")

e2e/external_dep/WORKSPACE

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ load("@aspect_rules_ts//ts:repositories.bzl", "LATEST_TYPESCRIPT_VERSION", "rule
77

88
rules_ts_dependencies(ts_version = LATEST_TYPESCRIPT_VERSION)
99

10+
rules_ts_dependencies(
11+
name = "npm_typescript3",
12+
ts_version = "3.9.9",
13+
)
14+
1015
load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies")
1116

1217
rules_js_dependencies()

ts/extensions.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ def _extension_impl(module_ctx):
1212
if not ts_version and not attr.ts_version_from:
1313
ts_version = LATEST_TYPESCRIPT_VERSION
1414
npm_dependencies(
15+
name = attr.name,
1516
ts_version = ts_version,
1617
ts_version_from = attr.ts_version_from,
1718
ts_integrity = attr.ts_integrity,
@@ -22,6 +23,7 @@ ext = module_extension(
2223
implementation = _extension_impl,
2324
tag_classes = {
2425
"deps": tag_class(attrs = {
26+
"name": attr.string(default = "npm_typescript"),
2527
"ts_version": attr.string(),
2628
"ts_version_from": attr.label(),
2729
"ts_integrity": attr.string(),

ts/private/npm_repositories.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,13 @@ http_archive_version = repository_rule(
7878
)
7979

8080
# buildifier: disable=function-docstring
81-
def npm_dependencies(ts_version_from = None, ts_version = None, ts_integrity = None, bzlmod = False):
81+
def npm_dependencies(name = "npm_typescript", ts_version_from = None, ts_version = None, ts_integrity = None, bzlmod = False):
8282
if (ts_version and ts_version_from) or (not ts_version_from and not ts_version):
8383
fail("""Exactly one of 'ts_version' or 'ts_version_from' must be set.""")
8484

8585
maybe(
8686
http_archive_version,
87-
name = "npm_typescript",
87+
name = name,
8888
bzlmod = bzlmod,
8989
version = ts_version,
9090
version_from = ts_version_from,

ts/repositories.bzl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,13 @@ def rules_ts_bazel_dependencies():
4949
url = "https://github.com/bazelbuild/rules_nodejs/releases/download/v6.2.0/rules_nodejs-v6.2.0.tar.gz",
5050
)
5151

52-
def rules_ts_dependencies(ts_version_from = None, ts_version = None, ts_integrity = None):
52+
def rules_ts_dependencies(name = "npm_typescript", ts_version_from = None, ts_version = None, ts_integrity = None):
5353
"""Dependencies needed by users of rules_ts.
5454
5555
To skip fetching the typescript package, call `rules_ts_bazel_dependencies` instead.
5656
5757
Args:
58+
name: name of the resulting external repository containing the TypeScript compiler.
5859
ts_version_from: label of a json file which declares a typescript version.
5960
6061
This may be a `package.json` file, with "typescript" in the dependencies or
@@ -76,6 +77,7 @@ def rules_ts_dependencies(ts_version_from = None, ts_version = None, ts_integrit
7677
rules_ts_bazel_dependencies()
7778

7879
npm_dependencies(
80+
name = name,
7981
ts_version_from = ts_version_from,
8082
ts_version = ts_version,
8183
ts_integrity = ts_integrity,

0 commit comments

Comments
 (0)