blob: 09ee44b315b050b3beaa7046cac30ef74c24503c [file] [log] [blame]
# Copyright 2017 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# BEGIN-DEV-ONLY
# Parts of this BUILD file only necessary when building within the bazelbuild/rules_typescript repo.
# The generated `@bazel/typescript` npm package contains a trimmed BUILD file using # DEV-ONLY fences.
#
# To update BUILD.bazel files after changing Go code, run
# bazel run //:gazelle
#
# Exclude node_modules, see
# https://github.com/bazelbuild/rules_go/blob/master/go/tools/gazelle/README.rst#directives
# gazelle:exclude node_modules
load("@bazel_gazelle//:def.bzl", "gazelle")
# END-DEV-ONLY
load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary", "npm_package")
# BEGIN-DEV-ONLY
load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library")
load("//:version.bzl", "COMPAT_VERSION")
# ts_library defaults to this label in the top-level package.
# Point to where the file actually lives.
alias(
name = "tsconfig.json",
actual = "//examples:tsconfig.json",
visibility = ["//visibility:public"],
)
exports_files(["LICENSE"])
gazelle(
name = "gazelle",
prefix = "github.com/bazelbuild/rules_typescript",
)
# Runtime libraries needed by the protobufjs library.
# Any JS code produced by the ts_proto_library rule has a runtime dependency on these scripts.
js_library(
name = "protobufjs_bootstrap_scripts",
srcs = [
"@build_bazel_rules_typescript_protobufs_compiletime_deps//node_modules/long:dist/long.js",
"@build_bazel_rules_typescript_protobufs_compiletime_deps//node_modules/protobufjs:dist/minimal/protobuf.min.js",
],
# Make devmode loading work when it does require("protobufjs/minimal")
# so this is shimmed to define it to equal global.protobuf
amd_names = {
"long": "Long",
"protobufjs/minimal": "protobuf",
},
visibility = ["//visibility:public"],
)
npm_package(
name = "npm_package",
srcs = [
"BUILD.bazel",
"LICENSE",
"README.md",
"WORKSPACE",
"defs.bzl",
"package.bzl",
"package.json",
"version.bzl",
"//devserver:npm_package_assets",
"//internal:npm_package_assets",
"//third_party/github.com/bazelbuild/bazel/src/main/protobuf:npm_package_assets",
"//ts_auto_deps:npm_package_assets",
],
replacements = {
"(#|\/\/)\\s+BEGIN-DEV-ONLY[\\w\W]+?(#|\/\/)\\s+END-DEV-ONLY": "",
# Do a simple replacement needed to make the local development differ
# from how our release is used.
"//devserver:devserver_bin": "//devserver",
"0.0.0-COMPAT_VERSION": COMPAT_VERSION,
},
deps = [
"//devserver:devserver-darwin",
"//devserver:devserver-linux",
"//devserver:devserver-windows",
"//internal:generated_BUILD",
"//internal:tsc_wrapped",
"//ts_auto_deps:ts_auto_deps-darwin",
"//ts_auto_deps:ts_auto_deps-linux",
"//ts_auto_deps:ts_auto_deps-windows",
],
)
# Produces the release we publish to GitHub. Users download this starlark package
# to get the @build_bazel_rules_typescript workspace.
# FIXME(gregmagolan): strip the npm_package prefix from within the generated archive
# pkg_tar(
# name = "release",
# srcs = ["//:npm_package"],
# extension = "tgz",
# )
# END-DEV-ONLY
# A nodejs_binary for @bazel/typescript/tsc_wrapped to use by default in
# ts_library that depends on @npm//@bazel/typescript instead of the
# output of the //internal/tsc_wrapped ts_library rule. This
# default is for downstream users that depend on the @bazel/typescript npm
# package. A generated @npm//@bazel/typescript/bin:tsc_wrapped target
# would not work because it does not have the node `--expose-gc` flag
# set which is required to support the call to `global.gc()`.
nodejs_binary(
name = "@bazel/typescript/tsc_wrapped",
data = ["@npm//@bazel/typescript"],
entry_point = "@bazel/typescript/internal/tsc_wrapped/tsc_wrapped.js",
install_source_map_support = False,
templated_args = ["--node_options=--expose-gc"],
visibility = ["//visibility:public"],
)