commit | cf23457555073c11d59f0ca570d68c4a658236af | [log] [tgz] |
---|---|---|
author | alexeagle <alexeagle@google.com> | Thu May 25 23:39:15 2017 +0200 |
committer | Florian Weikert <fwe@google.com> | Fri Jul 27 17:59:32 2018 +0200 |
tree | 15bb12522184f2535c3bb8d7d41fe0be5114e4cf | |
parent | 6646d09acaa4efda588937e442dd4d70508291d2 [diff] |
Fix compilation of //internal/tsc_wrapped PiperOrigin-RevId: 157155278
WARNING: this is an early release with limited features. Breaking changes are likely. Not recommended for general use.
The TypeScript rules integrate the TypeScript compiler with Bazel.
First, install a current Bazel distribution.
Create a BUILD
file in your project root:
package(default_visibility = ["//visibility:public"]) exports_files(["tsconfig.json"]) # NOTE: this will move to node_modules/BUILD in a later release filegroup(name = "node_modules", srcs = glob(["node_modules/**/*"]))
Note, on Mac file paths are case-insensitive, so make sure there isn't already a
build
folder in the project root.
Next create a WORKSPACE
file in your project root (or edit the existing one) containing:
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "io_bazel_rules_typescript", remote = "https://github.com/bazelbuild/rules_typescript.git", tag = "0.0.1", ) load("@io_bazel_rules_typescript//:defs.bzl", "node_repositories", "yarn_install") node_repositories() yarn_install(package_json = "//:package.json")
Currently, the only available rule is ts_library
which invokes the TypeScript compiler on one compilation unit (generally one directory of source files).
Create a BUILD
file next to your sources:
package(default_visibility=["//visibility:public"]) load("@io_bazel_rules_typescript//:defs.bzl", "ts_library") ts_library( name = "my_code", srcs = glob(["*.ts"]), deps = ["//path/to/other:library"], tsconfig = "//:tsconfig.json", )
(Note that you may want to name the ts_library target the same as the enclosing directory, making it the default target in the package.)
Then build it:
bazel build //path/to/package:target
The resulting .d.ts
file paths will be printed. Additionally, the .js
outputs from TypeScript will be written to disk, next to the .d.ts
files.
If you‘d like a “watch mode”, try https://github.com/bazelbuild/bazel-watcher (note, it’s also quite new).
At some point, we plan to release a tool similar to gazelle to generate the BUILD files from your source code.