| load("@build_bazel_rules_nodejs//:index.bzl", "pkg_web") |
| load("@npm//@bazel/concatjs:index.bzl", "concatjs_devserver", "ts_library") |
| load("@npm//@bazel/protractor:index.bzl", "protractor_web_test_suite") |
| load("@npm//@bazel/rollup:index.bzl", "rollup_bundle") |
| load("@npm//@bazel/terser:index.bzl", "terser_minified") |
| load("@npm//@bazel/typescript:index.bzl", "ts_project") |
| load("@npm//html-insert-assets:index.bzl", "html_insert_assets") |
| load("@npm//http-server:index.bzl", "http_server") |
| |
| package(default_visibility = ["//visibility:public"]) |
| |
| ts_library( |
| name = "app", |
| srcs = ["app.ts"], |
| ) |
| |
| concatjs_devserver( |
| name = "devserver", |
| # We'll collect all the devmode JS sources from these TypeScript libraries |
| deps = [":app"], |
| ) |
| |
| rollup_bundle( |
| name = "bundle", |
| entry_point = ":app.ts", |
| deps = [":app"], |
| ) |
| |
| terser_minified( |
| name = "bundle.min", |
| src = ":bundle", |
| ) |
| |
| _ASSETS = [ |
| ":bundle.min", |
| "//styles:base.css", |
| "//styles:test.css", |
| ] |
| |
| # Copy index.html to the output folder, adding <script> and <link> tags |
| html_insert_assets( |
| name = "inject_tags", |
| outs = ["index.html"], |
| args = [ |
| "--out=$@", |
| "--html=$(execpath :index.tmpl.html)", |
| "--roots=$(RULEDIR)", |
| "--assets", |
| ] + ["$(execpaths %s)" % a for a in _ASSETS], |
| data = [":index.tmpl.html"] + _ASSETS, |
| ) |
| |
| pkg_web( |
| name = "package", |
| srcs = [":inject_tags"] + _ASSETS, |
| ) |
| |
| http_server( |
| name = "prodserver", |
| data = [":package"], |
| templated_args = ["package"], |
| ) |
| |
| # This could also be `ts_library` but we mix them here to illustrate |
| ts_project( |
| name = "tsconfig-test", |
| testonly = 1, |
| srcs = ["app.e2e-spec.ts"], |
| extends = "tsconfig.json", |
| tsconfig = "tsconfig-test.json", |
| deps = [ |
| "@npm//@types/jasmine", |
| "@npm//@types/node", |
| "@npm//protractor", |
| ], |
| ) |
| |
| protractor_web_test_suite( |
| name = "prodserver_test", |
| srcs = ["app.e2e-spec.js"], |
| on_prepare = ":protractor.on-prepare.js", |
| server = "//:prodserver", |
| ) |
| |
| protractor_web_test_suite( |
| name = "devserver_test", |
| srcs = ["app.e2e-spec.js"], |
| on_prepare = ":protractor.on-prepare.js", |
| server = "//:devserver", |
| ) |
| |
| # Just a dummy test so that we have a test target for //... on certain bazelci platforms with bazel_integration_test |
| sh_test( |
| name = "dummy_test", |
| srcs = ["dummy_test.sh"], |
| ) |