build(bazel): fine-grained npm deps and idiomatic install of @angular/bazel (#26607)
PR Close #26607
This commit is contained in:

committed by
Alex Rickabaugh

parent
81e571b908
commit
c251a5a4d1
@ -1,5 +1,15 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load("@build_bazel_rules_typescript//:defs.bzl", "ts_config")
|
||||
|
||||
exports_files(["tsconfig.json"])
|
||||
|
||||
ts_config(
|
||||
name = "tsconfig-test",
|
||||
src = "tsconfig-test.json",
|
||||
deps = ["tsconfig.json"],
|
||||
)
|
||||
|
||||
# The toolchain container used for execution is defined in the target indicated
|
||||
# by "extra_execution_platforms", "host_platform" and "platforms".
|
||||
# If you are using your own toolchain container, you need to create a platform
|
||||
@ -28,5 +38,4 @@ platform(
|
||||
value: "SYS_ADMIN"
|
||||
}
|
||||
""",
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
@ -1,62 +0,0 @@
|
||||
###############################
|
||||
# Typescript / Angular / Sass #
|
||||
###############################
|
||||
|
||||
# Make compilation fast, by keeping a few copies of the compilers
|
||||
# running as daemons, and cache SourceFile AST's to reduce parse time.
|
||||
build --strategy=TypeScriptCompile=worker
|
||||
build --strategy=AngularTemplateCompile=worker
|
||||
|
||||
# Enable debugging tests with --config=debug
|
||||
test:debug --test_arg=--node_options=--inspect-brk --test_output=streamed --test_strategy=exclusive --test_timeout=9999 --nocache_test_results
|
||||
|
||||
###############################
|
||||
# Filesystem interactions #
|
||||
###############################
|
||||
|
||||
# Don't create symlinks like bazel-out in the project.
|
||||
# These cause VSCode to traverse a massive tree, opening file handles and
|
||||
# eventually a surprising failure with auto-discovery of the C++ toolchain in
|
||||
# MacOS High Sierra.
|
||||
# See https://github.com/bazelbuild/bazel/issues/4603
|
||||
build --symlink_prefix=/
|
||||
|
||||
# Performance: avoid stat'ing input files
|
||||
build --watchfs
|
||||
|
||||
###############################
|
||||
# Release support #
|
||||
###############################
|
||||
|
||||
# Releases should always be stamped with version control info
|
||||
build --workspace_status_command=./tools/bazel_stamp_vars.sh
|
||||
|
||||
###############################
|
||||
# Output #
|
||||
###############################
|
||||
|
||||
# A more useful default output mode for bazel query
|
||||
# Prints eg. "ng_module rule //foo:bar" rather than just "//foo:bar"
|
||||
query --output=label_kind
|
||||
|
||||
# By default, failing tests don't print any output, it goes to the log file
|
||||
test --test_output=errors
|
||||
|
||||
# Show which actions are run under workers,
|
||||
# and print all the actions running in parallel.
|
||||
# Helps to demonstrate that bazel uses all the cores on the machine.
|
||||
build --experimental_ui
|
||||
test --experimental_ui
|
||||
|
||||
################################
|
||||
# Settings for CircleCI #
|
||||
################################
|
||||
|
||||
# Bazel flags for CircleCI are in /.circleci/bazel.rc
|
||||
|
||||
################################
|
||||
# Temporary Settings for Ivy #
|
||||
################################
|
||||
# to determine if the compiler used should be Ivy or ViewEngine one can use `--define=compile=local` on
|
||||
# any bazel target. This is a temporary flag until codebase is permanently switched to Ivy.
|
||||
build --define=compile=legacy
|
@ -6,9 +6,12 @@ load("//packages/bazel:index.bzl", _ng_module = "ng_module", _ng_package = "ng_p
|
||||
load("//packages/bazel/src:ng_module.bzl", _internal_global_ng_module = "internal_global_ng_module")
|
||||
load("//packages/bazel/src:ng_rollup_bundle.bzl", _ng_rollup_bundle = "ng_rollup_bundle")
|
||||
|
||||
DEFAULT_TSCONFIG_BUILD = "//packages:tsconfig-build.json"
|
||||
DEFAULT_TSCONFIG_TEST = "//packages:tsconfig-test.json"
|
||||
DEFAULT_NODE_MODULES = "@angular_deps//:node_modules"
|
||||
_DEFAULT_TSCONFIG_BUILD = "//packages:tsconfig-build.json"
|
||||
_DEFAULT_TSCONFIG_TEST = "//packages:tsconfig-test.json"
|
||||
_DEFAULT_TS_TYPINGS = "@ngdeps//typescript:typescript__typings"
|
||||
_INTERNAL_NG_MODULE_COMPILER = "//packages/bazel/src/ngc-wrapped"
|
||||
_INTERNAL_NG_MODULE_XI18N = "//packages/bazel/src/ngc-wrapped:xi18n"
|
||||
_INTERNAL_NG_PACKAGER_PACKAGER = "//packages/bazel/src/ng_package:packager"
|
||||
|
||||
# Packages which are versioned together on npm
|
||||
ANGULAR_SCOPED_PACKAGES = ["@angular/%s" % p for p in [
|
||||
@ -41,53 +44,105 @@ PKG_GROUP_REPLACEMENTS = {
|
||||
]""" % ",\n ".join(["\"%s\"" % s for s in ANGULAR_SCOPED_PACKAGES]),
|
||||
}
|
||||
|
||||
def ts_library(tsconfig = None, node_modules = DEFAULT_NODE_MODULES, testonly = False, **kwargs):
|
||||
def ts_library(tsconfig = None, testonly = False, deps = [], **kwargs):
|
||||
"""Default values for ts_library"""
|
||||
deps = deps + ["@ngdeps//tslib"]
|
||||
if testonly:
|
||||
# Match the types[] in //packages:tsconfig-test.json
|
||||
deps.append("@ngdeps//@types/jasmine")
|
||||
deps.append("@ngdeps//@types/node")
|
||||
if not tsconfig:
|
||||
if testonly:
|
||||
tsconfig = DEFAULT_TSCONFIG_TEST
|
||||
tsconfig = _DEFAULT_TSCONFIG_TEST
|
||||
else:
|
||||
tsconfig = DEFAULT_TSCONFIG_BUILD
|
||||
_ts_library(tsconfig = tsconfig, node_modules = node_modules, testonly = testonly, **kwargs)
|
||||
tsconfig = _DEFAULT_TSCONFIG_BUILD
|
||||
_ts_library(
|
||||
tsconfig = tsconfig,
|
||||
testonly = testonly,
|
||||
deps = deps,
|
||||
node_modules = _DEFAULT_TS_TYPINGS,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
def ng_module(name, tsconfig = None, entry_point = None, node_modules = DEFAULT_NODE_MODULES, testonly = False, **kwargs):
|
||||
def ng_module(name, tsconfig = None, entry_point = None, testonly = False, deps = [], **kwargs):
|
||||
"""Default values for ng_module"""
|
||||
deps = deps + ["@ngdeps//tslib"]
|
||||
if testonly:
|
||||
# Match the types[] in //packages:tsconfig-test.json
|
||||
deps.append("@ngdeps//@types/jasmine")
|
||||
deps.append("@ngdeps//@types/node")
|
||||
if not tsconfig:
|
||||
if testonly:
|
||||
tsconfig = DEFAULT_TSCONFIG_TEST
|
||||
tsconfig = _DEFAULT_TSCONFIG_TEST
|
||||
else:
|
||||
tsconfig = DEFAULT_TSCONFIG_BUILD
|
||||
tsconfig = _DEFAULT_TSCONFIG_BUILD
|
||||
if not entry_point:
|
||||
entry_point = "public_api.ts"
|
||||
_ng_module(name = name, flat_module_out_file = name, tsconfig = tsconfig, entry_point = entry_point, node_modules = node_modules, testonly = testonly, **kwargs)
|
||||
_ng_module(
|
||||
name = name,
|
||||
flat_module_out_file = name,
|
||||
tsconfig = tsconfig,
|
||||
entry_point = entry_point,
|
||||
testonly = testonly,
|
||||
deps = deps,
|
||||
compiler = _INTERNAL_NG_MODULE_COMPILER,
|
||||
ng_xi18n = _INTERNAL_NG_MODULE_XI18N,
|
||||
node_modules = _DEFAULT_TS_TYPINGS,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
# ivy_ng_module behaves like ng_module, and under --define=compile=legacy it runs ngc with global
|
||||
# analysis but produces Ivy outputs. Under other compile modes, it behaves as ng_module.
|
||||
# TODO(alxhub): remove when ngtsc supports the same use cases.
|
||||
def ivy_ng_module(name, tsconfig = None, entry_point = None, testonly = False, **kwargs):
|
||||
def ivy_ng_module(name, tsconfig = None, entry_point = None, testonly = False, deps = [], **kwargs):
|
||||
"""Default values for ivy_ng_module"""
|
||||
deps = deps + ["@ngdeps//tslib"]
|
||||
if testonly:
|
||||
# Match the types[] in //packages:tsconfig-test.json
|
||||
deps.append("@ngdeps//@types/jasmine")
|
||||
deps.append("@ngdeps//@types/node")
|
||||
if not tsconfig:
|
||||
if testonly:
|
||||
tsconfig = DEFAULT_TSCONFIG_TEST
|
||||
tsconfig = _DEFAULT_TSCONFIG_TEST
|
||||
else:
|
||||
tsconfig = DEFAULT_TSCONFIG_BUILD
|
||||
tsconfig = _DEFAULT_TSCONFIG_BUILD
|
||||
if not entry_point:
|
||||
entry_point = "public_api.ts"
|
||||
_internal_global_ng_module(name = name, flat_module_out_file = name, tsconfig = tsconfig, entry_point = entry_point, testonly = testonly, **kwargs)
|
||||
_internal_global_ng_module(
|
||||
name = name,
|
||||
flat_module_out_file = name,
|
||||
tsconfig = tsconfig,
|
||||
entry_point = entry_point,
|
||||
testonly = testonly,
|
||||
deps = deps,
|
||||
compiler = _INTERNAL_NG_MODULE_COMPILER,
|
||||
ng_xi18n = _INTERNAL_NG_MODULE_XI18N,
|
||||
node_modules = _DEFAULT_TS_TYPINGS,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
def ng_package(name, node_modules = DEFAULT_NODE_MODULES, readme_md = None, license_banner = None, **kwargs):
|
||||
def ng_package(name, readme_md = None, license_banner = None, deps = [], **kwargs):
|
||||
"""Default values for ng_package"""
|
||||
if not readme_md:
|
||||
readme_md = "//packages:README.md"
|
||||
if not license_banner:
|
||||
license_banner = "//packages:license-banner.txt"
|
||||
deps = deps + [
|
||||
"@ngdeps//tslib",
|
||||
]
|
||||
|
||||
_ng_package(
|
||||
name = name,
|
||||
deps = deps,
|
||||
readme_md = readme_md,
|
||||
license_banner = license_banner,
|
||||
replacements = PKG_GROUP_REPLACEMENTS,
|
||||
node_modules = node_modules,
|
||||
ng_packager = _INTERNAL_NG_PACKAGER_PACKAGER,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
def npm_package(name, replacements = {}, **kwargs):
|
||||
"""Default values for npm_package"""
|
||||
_npm_package(
|
||||
name = name,
|
||||
replacements = dict(replacements, **PKG_GROUP_REPLACEMENTS),
|
||||
@ -95,10 +150,11 @@ def npm_package(name, replacements = {}, **kwargs):
|
||||
)
|
||||
|
||||
def ts_web_test_suite(bootstrap = [], deps = [], **kwargs):
|
||||
"""Default values for ts_web_test_suite"""
|
||||
if not bootstrap:
|
||||
bootstrap = ["//:web_test_bootstrap_scripts"]
|
||||
local_deps = [
|
||||
"@angular_deps//:node_modules/tslib/tslib.js",
|
||||
"@ngdeps//node_modules/tslib:tslib.js",
|
||||
"//tools/testing:browser",
|
||||
] + deps
|
||||
|
||||
@ -119,11 +175,40 @@ def ts_web_test_suite(bootstrap = [], deps = [], **kwargs):
|
||||
**kwargs
|
||||
)
|
||||
|
||||
def nodejs_binary(node_modules = DEFAULT_NODE_MODULES, **kwargs):
|
||||
_nodejs_binary(node_modules = node_modules, **kwargs)
|
||||
def nodejs_binary(**kwargs):
|
||||
"""Default values for nodejs_binary"""
|
||||
_nodejs_binary(
|
||||
# Pass-thru --define=compile=foo as an environment variable
|
||||
configuration_env_vars = ["compile"],
|
||||
**kwargs
|
||||
)
|
||||
|
||||
def jasmine_node_test(node_modules = DEFAULT_NODE_MODULES, **kwargs):
|
||||
_jasmine_node_test(node_modules = node_modules, **kwargs)
|
||||
def jasmine_node_test(deps = [], **kwargs):
|
||||
"""Default values for jasmine_node_test"""
|
||||
deps = deps + [
|
||||
# Very common dependencies for tests
|
||||
"@ngdeps//chokidar",
|
||||
"@ngdeps//domino",
|
||||
"@ngdeps//jasmine",
|
||||
"@ngdeps//jasmine-core",
|
||||
"@ngdeps//mock-fs",
|
||||
"@ngdeps//reflect-metadata",
|
||||
"@ngdeps//tslib",
|
||||
"@ngdeps//xhr2",
|
||||
]
|
||||
_jasmine_node_test(
|
||||
deps = deps,
|
||||
# Pass-thru --define=compile=foo as an environment variable
|
||||
configuration_env_vars = ["compile"],
|
||||
**kwargs
|
||||
)
|
||||
|
||||
def ng_rollup_bundle(node_modules = DEFAULT_NODE_MODULES, **kwargs):
|
||||
_ng_rollup_bundle(node_modules = node_modules, **kwargs)
|
||||
def ng_rollup_bundle(deps = [], **kwargs):
|
||||
"""Default values for ng_rollup_bundle"""
|
||||
deps = deps + [
|
||||
"@ngdeps//tslib",
|
||||
]
|
||||
_ng_rollup_bundle(
|
||||
deps = deps,
|
||||
**kwargs
|
||||
)
|
||||
|
@ -15,263 +15,14 @@ def ng_setup_workspace():
|
||||
to build angular
|
||||
"""
|
||||
yarn_install(
|
||||
name = "angular_deps",
|
||||
name = "ngdeps",
|
||||
package_json = "@angular//:package.json",
|
||||
yarn_lock = "@angular//:yarn.lock",
|
||||
data = ["@angular//:tools/yarn/check-yarn.js", "@angular//:tools/postinstall-patches.js"],
|
||||
manual_build_file_contents = """package(default_visibility = ["//visibility:public"])
|
||||
filegroup(
|
||||
name = "node_modules",
|
||||
srcs = glob(["/".join([
|
||||
"node_modules",
|
||||
pkg,
|
||||
"**",
|
||||
ext,
|
||||
]) for pkg in [
|
||||
"adm-zip",
|
||||
"ajv",
|
||||
"angular",
|
||||
"angular-1.5",
|
||||
"angular-1.6",
|
||||
"angular-mocks",
|
||||
"angular-mocks-1.5",
|
||||
"angular-mocks-1.6",
|
||||
"anymatch",
|
||||
"arr-diff",
|
||||
"arr-flatten",
|
||||
"arr-union",
|
||||
"array-unique",
|
||||
"asn1",
|
||||
"assert-plus",
|
||||
"assign-symbols",
|
||||
"async-each",
|
||||
"asynckit",
|
||||
"atob",
|
||||
"aws-sign2",
|
||||
"aws4",
|
||||
"balanced-match",
|
||||
"base",
|
||||
"base64-js",
|
||||
"binary-extensions",
|
||||
"blocking-proxy",
|
||||
"brace-expansion",
|
||||
"braces",
|
||||
"bytebuffer",
|
||||
"cache-base",
|
||||
"camelcase",
|
||||
"canonical-path",
|
||||
"caseless",
|
||||
"chokidar",
|
||||
"class-utils",
|
||||
"co",
|
||||
"collection-visit",
|
||||
"convert-source-map",
|
||||
"combined-stream",
|
||||
"component-emitter",
|
||||
"concat-map",
|
||||
"copy-descriptor",
|
||||
"core-util-is",
|
||||
"debug",
|
||||
"decamelize",
|
||||
"decode-uri-component",
|
||||
"define-property",
|
||||
"delayed-stream",
|
||||
"dependency-graph",
|
||||
"domino",
|
||||
"error-ex",
|
||||
"expand-brackets",
|
||||
"expand-range",
|
||||
"extend",
|
||||
"extend-shallow",
|
||||
"extglob",
|
||||
"extsprintf",
|
||||
"fast-deep-equal",
|
||||
"fast-json-stable-stringify",
|
||||
"filename-regex",
|
||||
"fill-range",
|
||||
"find-up",
|
||||
"for-in",
|
||||
"for-own",
|
||||
"forever-agent",
|
||||
"form-data",
|
||||
"fragment-cache",
|
||||
"fs.realpath",
|
||||
"fs-extra",
|
||||
"get-caller-file",
|
||||
"get-value",
|
||||
"glob",
|
||||
"glob-base",
|
||||
"glob-parent",
|
||||
"graceful-fs",
|
||||
"hammerjs",
|
||||
"har-schema",
|
||||
"har-validator",
|
||||
"has-value",
|
||||
"has-values",
|
||||
"http-signature",
|
||||
"https-proxy-agent",
|
||||
"inflight",
|
||||
"inherits",
|
||||
"is-arrayish",
|
||||
"is-accessor-descriptor",
|
||||
"is-binary-path",
|
||||
"is-buffer",
|
||||
"is-data-descriptor",
|
||||
"is-descriptor",
|
||||
"is-dotfile",
|
||||
"is-equal-shallow",
|
||||
"is-extendable",
|
||||
"is-extglob",
|
||||
"is-glob",
|
||||
"is-number",
|
||||
"is-plain-object",
|
||||
"is-posix-bracket",
|
||||
"is-primitive",
|
||||
"is-typedarray",
|
||||
"is-windows",
|
||||
"isarray",
|
||||
"isobject",
|
||||
"isstream",
|
||||
"jasmine",
|
||||
"jasmine-core",
|
||||
"jasminewd2",
|
||||
"json-schema",
|
||||
"json-schema-traverse",
|
||||
"json-stable-stringify",
|
||||
"json-stringify-safe",
|
||||
"jsprim",
|
||||
"kind-of",
|
||||
"locate-path",
|
||||
"long",
|
||||
"lru-cache",
|
||||
"magic-string",
|
||||
"map-cache",
|
||||
"map-visit",
|
||||
"math-random",
|
||||
"micromatch",
|
||||
"mime-db",
|
||||
"mime-types",
|
||||
"minimatch",
|
||||
"minimist",
|
||||
"mixin-deep",
|
||||
"mock-fs",
|
||||
"node-uuid",
|
||||
"nanomatch",
|
||||
"normalize-path",
|
||||
"oauth-sign",
|
||||
"object.omit",
|
||||
"object.pick",
|
||||
"object-copy",
|
||||
"object-visit",
|
||||
"once",
|
||||
"optimist",
|
||||
"options",
|
||||
"os-locale",
|
||||
"os-tmpdir",
|
||||
"p-limit",
|
||||
"p-locate",
|
||||
"p-try",
|
||||
"parse-glob",
|
||||
"parse-json",
|
||||
"pascalcase",
|
||||
"path-dirname",
|
||||
"path-exists",
|
||||
"path-is-absolute",
|
||||
"performance-now",
|
||||
"pify",
|
||||
"posix-character-classes",
|
||||
"preserve",
|
||||
"process-nextick-args",
|
||||
"protobufjs",
|
||||
"protractor",
|
||||
"qs",
|
||||
"randomatic",
|
||||
"read-pkg-up",
|
||||
"readable-stream",
|
||||
"readdirp",
|
||||
"reflect-metadata",
|
||||
"regex-cache",
|
||||
"regex-not",
|
||||
"remove-trailing-separator",
|
||||
"repeat-element",
|
||||
"repeat-string",
|
||||
"request",
|
||||
"require-directory",
|
||||
"require-main-filename",
|
||||
"ret",
|
||||
"rimraf",
|
||||
"safe-buffer",
|
||||
"safe-regex",
|
||||
"safer-buffer",
|
||||
"sax",
|
||||
"selenium-webdriver",
|
||||
"semver",
|
||||
"set-blocking",
|
||||
"set-immediate-shim",
|
||||
"set-value",
|
||||
"shelljs",
|
||||
"sigmund",
|
||||
"snapdragon",
|
||||
"snapdragon-node",
|
||||
"snapdragon-util",
|
||||
"source-map",
|
||||
"source-map-resolve",
|
||||
"source-map-support",
|
||||
"source-map-url",
|
||||
"sourcemap-codec",
|
||||
"split-string",
|
||||
"sshpk",
|
||||
"static-extend",
|
||||
"stringstream",
|
||||
"strip-bom",
|
||||
"tmp",
|
||||
"to-object-path",
|
||||
"to-regex",
|
||||
"to-regex-range",
|
||||
"tough-cookie",
|
||||
"tsickle",
|
||||
"tslib",
|
||||
"tsutils",
|
||||
"tunnel-agent",
|
||||
"typescript",
|
||||
"union-value",
|
||||
"universalify",
|
||||
"unset-value",
|
||||
"upath",
|
||||
"uri-js",
|
||||
"urix",
|
||||
"use",
|
||||
"util-deprecate",
|
||||
"uuid",
|
||||
"verror",
|
||||
"webdriver-js-extender",
|
||||
"webdriver-manager",
|
||||
"wordwrap",
|
||||
"wrappy",
|
||||
"xhr2",
|
||||
"xml2js",
|
||||
"xmlbuilder",
|
||||
"y18n",
|
||||
"yargs",
|
||||
"yargs-parser",
|
||||
"zone.js",
|
||||
"@angular-devkit/core",
|
||||
"@angular-devkit/schematics",
|
||||
"@types",
|
||||
"@webcomponents/custom-elements",
|
||||
] for ext in [
|
||||
"*.js",
|
||||
"*.json",
|
||||
"*.d.ts",
|
||||
]] + [
|
||||
"node_modules/protractor/**",
|
||||
"node_modules/@schematics/angular/**",
|
||||
]))
|
||||
""",
|
||||
)
|
||||
|
||||
yarn_install(
|
||||
name = "ts-api-guardian_runtime_deps",
|
||||
name = "ts-api-guardian_deps",
|
||||
package_json = "@angular//tools/ts-api-guardian:package.json",
|
||||
yarn_lock = "@angular//tools/ts-api-guardian:yarn.lock",
|
||||
)
|
||||
|
@ -6,7 +6,7 @@ USER root
|
||||
# Bazel install
|
||||
# See https://bazel.build/versions/master/docs/install-ubuntu.html#using-bazel-custom-apt-repository-recommended
|
||||
# Note, only the latest release is available, see https://github.com/bazelbuild/bazel/issues/4947
|
||||
RUN BAZEL_VERSION="0.17.1" \
|
||||
RUN BAZEL_VERSION="0.18.0" \
|
||||
&& wget -q -O - https://bazel.build/bazel-release.pub.gpg | apt-key add - \
|
||||
&& echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" > /etc/apt/sources.list.d/bazel.list \
|
||||
&& apt-get update \
|
||||
|
@ -6,7 +6,7 @@ This docker container provides everything needed to build and test Angular appli
|
||||
- npm 6.2.0
|
||||
- yarn 1.9.2
|
||||
- Java 8 (for Closure Compiler and Bazel)
|
||||
- Bazel build tool v0.17.1 - http://bazel.build
|
||||
- Bazel build tool v0.18.0 - http://bazel.build
|
||||
- Google Chrome 69.0.3497.81
|
||||
- Mozilla Firefox 47.0.1
|
||||
- xvfb (virtual framebuffer) for headless testing
|
||||
|
14
tools/npm/package.json
Normal file
14
tools/npm/package.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"description": "minimal @npm repo required to build @rxjs from source and so that @npm//@angular/bazel is a valid target",
|
||||
"dependencies": {
|
||||
"@angular/bazel": "6.1.9",
|
||||
"@angular/compiler": "6.1.9",
|
||||
"@angular/compiler-cli": "6.1.9",
|
||||
"@bazel/karma": "0.20.3",
|
||||
"@bazel/typescript": "0.20.3",
|
||||
"typescript": "~3.1.1"
|
||||
},
|
||||
"scripts": {
|
||||
"//": "TODO(gregmagolan): figure out how to keep @bazel/karma & @bazel/typescript dependencies here up to date with the root package.json; NOTE: versions of @angular/x don't matter here as they are only require to create the @npm//@angular/bazel target name"
|
||||
}
|
||||
}
|
3805
tools/npm/yarn.lock
Normal file
3805
tools/npm/yarn.lock
Normal file
File diff suppressed because it is too large
Load Diff
@ -14,6 +14,7 @@ ts_library(
|
||||
),
|
||||
deps = [
|
||||
"//packages:types",
|
||||
"@ngdeps//typescript",
|
||||
],
|
||||
)
|
||||
|
||||
@ -27,6 +28,7 @@ ts_library(
|
||||
deps = [
|
||||
":lib",
|
||||
"//packages:types",
|
||||
"@ngdeps//typescript",
|
||||
],
|
||||
)
|
||||
|
||||
|
@ -10,14 +10,16 @@
|
||||
# because it introduces an extra target_bin target.
|
||||
load("@build_bazel_rules_nodejs//internal/node:node.bzl", "nodejs_binary", "nodejs_test")
|
||||
|
||||
DEFAULT_NODE_MODULES = "@angular_deps//:node_modules"
|
||||
|
||||
def js_expected_symbol_test(name, src, golden, node_modules = DEFAULT_NODE_MODULES, **kwargs):
|
||||
def js_expected_symbol_test(name, src, golden, data = [], **kwargs):
|
||||
"""This test verifies that a set of top level symbols from a javascript file match a gold file.
|
||||
"""
|
||||
all_data = [src, golden]
|
||||
all_data += [Label("//tools/symbol-extractor:lib")]
|
||||
all_data += [Label("@bazel_tools//tools/bash/runfiles")]
|
||||
all_data = data + [
|
||||
src,
|
||||
golden,
|
||||
Label("//tools/symbol-extractor:lib"),
|
||||
Label("@bazel_tools//tools/bash/runfiles"),
|
||||
Label("@ngdeps//typescript"),
|
||||
]
|
||||
entry_point = "angular/tools/symbol-extractor/cli.js"
|
||||
|
||||
nodejs_test(
|
||||
@ -25,7 +27,6 @@ def js_expected_symbol_test(name, src, golden, node_modules = DEFAULT_NODE_MODUL
|
||||
data = all_data,
|
||||
entry_point = entry_point,
|
||||
templated_args = ["$(location %s)" % src, "$(location %s)" % golden],
|
||||
node_modules = node_modules,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
@ -35,6 +36,5 @@ def js_expected_symbol_test(name, src, golden, node_modules = DEFAULT_NODE_MODUL
|
||||
data = all_data,
|
||||
entry_point = entry_point,
|
||||
templated_args = ["$(location %s)" % src, "$(location %s)" % golden, "--accept"],
|
||||
node_modules = node_modules,
|
||||
**kwargs
|
||||
)
|
||||
|
@ -29,5 +29,7 @@ ts_library(
|
||||
name = "node_no_angular",
|
||||
testonly = 1,
|
||||
srcs = ["init_node_no_angular_spec.ts"],
|
||||
deps = ["//packages:types"],
|
||||
deps = [
|
||||
"//packages:types",
|
||||
],
|
||||
)
|
||||
|
@ -13,9 +13,17 @@ ts_library(
|
||||
name = "lib",
|
||||
srcs = glob(["lib/*.ts"]),
|
||||
module_name = "ts-api-guardian",
|
||||
node_modules = "@ts-api-guardian_runtime_deps//:node_modules",
|
||||
node_modules = "@ts-api-guardian_deps//typescript:typescript__typings",
|
||||
tsconfig = "//tools:tsconfig.json",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"@ts-api-guardian_deps//@types/diff",
|
||||
"@ts-api-guardian_deps//@types/minimist",
|
||||
"@ts-api-guardian_deps//@types/node",
|
||||
"@ts-api-guardian_deps//diff",
|
||||
"@ts-api-guardian_deps//minimist",
|
||||
"@ts-api-guardian_deps//typescript",
|
||||
],
|
||||
)
|
||||
|
||||
# Copy Angular's license to govern ts-api-guardian as well.
|
||||
@ -47,8 +55,17 @@ ts_library(
|
||||
name = "test_lib",
|
||||
testonly = True,
|
||||
srcs = glob(["test/*.ts"]),
|
||||
tsconfig = "//tools:tsconfig.json",
|
||||
deps = [":lib"],
|
||||
node_modules = "@ts-api-guardian_deps//typescript:typescript__typings",
|
||||
tsconfig = "//tools:tsconfig-test",
|
||||
deps = [
|
||||
":lib",
|
||||
"@ts-api-guardian_deps//@types/chai",
|
||||
"@ts-api-guardian_deps//@types/jasmine",
|
||||
"@ts-api-guardian_deps//@types/node",
|
||||
"@ts-api-guardian_deps//chai",
|
||||
"@ts-api-guardian_deps//jasmine",
|
||||
"@ts-api-guardian_deps//typescript",
|
||||
],
|
||||
)
|
||||
|
||||
jasmine_node_test(
|
||||
@ -60,7 +77,8 @@ jasmine_node_test(
|
||||
"test/fixtures/*.patch",
|
||||
]) + [
|
||||
":ts-api-guardian",
|
||||
"@ts-api-guardian_deps//chalk",
|
||||
],
|
||||
node_modules = "@ts-api-guardian_runtime_deps//:node_modules",
|
||||
node_modules = "@ts-api-guardian_deps//typescript:typescript__typings",
|
||||
tags = ["local"],
|
||||
)
|
||||
|
@ -42,7 +42,7 @@ def ts_api_guardian_test(name, golden, actual, data = [], strip_export_pattern =
|
||||
nodejs_test(
|
||||
name = name,
|
||||
data = data,
|
||||
node_modules = "@ts-api-guardian_runtime_deps//:node_modules",
|
||||
node_modules = "@ts-api-guardian_deps//:node_modules",
|
||||
entry_point = "angular/tools/ts-api-guardian/bin/ts-api-guardian",
|
||||
templated_args = args + ["--verify", golden, actual],
|
||||
**kwargs
|
||||
@ -52,7 +52,7 @@ def ts_api_guardian_test(name, golden, actual, data = [], strip_export_pattern =
|
||||
name = name + ".accept",
|
||||
testonly = True,
|
||||
data = data,
|
||||
node_modules = "@ts-api-guardian_runtime_deps//:node_modules",
|
||||
node_modules = "@ts-api-guardian_deps//:node_modules",
|
||||
entry_point = "angular/tools/ts-api-guardian/bin/ts-api-guardian",
|
||||
templated_args = args + ["--out", golden, actual],
|
||||
**kwargs
|
||||
|
@ -19,7 +19,9 @@
|
||||
"minimist": "^1.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/chai": "^4.1.2",
|
||||
"@types/diff": "^3.5.1",
|
||||
"@types/jasmine": "^2.8.8",
|
||||
"@types/minimist": "^1.2.0",
|
||||
"@types/node": "^10.9.2",
|
||||
"chai": "^4.1.2",
|
||||
|
@ -2,35 +2,52 @@
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@types/chai@^4.1.2":
|
||||
version "4.1.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.6.tgz#1eb26c040e3a84205b1008ad55c800e5e8a94e34"
|
||||
integrity sha512-CBk7KTZt3FhPsEkYioG6kuCIpWISw+YI8o+3op4+NXwTpvAPxE1ES8+PY8zfaK2L98b1z5oq03UHa4VYpeUxnw==
|
||||
|
||||
"@types/diff@^3.5.1":
|
||||
version "3.5.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/diff/-/diff-3.5.1.tgz#30253f6e177564ad7da707b1ebe46d3eade71706"
|
||||
integrity sha512-nkT7bd/YM6QRDQjww8PYf0kOj1MvwxQ/WaCinj2Hm1HlL+JqGTm4cDoQeROfiWX/B3SNI1nyLLhLAQpp5sE3hw==
|
||||
|
||||
"@types/jasmine@^2.8.8":
|
||||
version "2.8.9"
|
||||
resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.9.tgz#e028c891e8551fdf6de905d959581fc4fa0b5509"
|
||||
integrity sha512-8dPZwjosElZOGGYw1nwTvOEMof4gjwAWNFS93nBI091BoEfd5drnHOLRMiRF/LOPuMTn5LgEdv0bTUO8QFVuHQ==
|
||||
|
||||
"@types/minimist@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6"
|
||||
integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=
|
||||
|
||||
"@types/node@^10.9.2":
|
||||
version "10.9.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.9.2.tgz#f0ab8dced5cd6c56b26765e1c0d9e4fdcc9f2a00"
|
||||
integrity sha512-pwZnkVyCGJ3LsQ0/3flQK5lCFao4esIzwUVzzk5NvL9vnkEyDhNf4fhHzUMHvyr56gNZywWTS2MR0euabMSz4A==
|
||||
|
||||
ansi-styles@^3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
|
||||
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
|
||||
dependencies:
|
||||
color-convert "^1.9.0"
|
||||
|
||||
assertion-error@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
|
||||
integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==
|
||||
|
||||
balanced-match@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.11"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
|
||||
dependencies:
|
||||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
@ -38,6 +55,7 @@ brace-expansion@^1.1.7:
|
||||
chai@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c"
|
||||
integrity sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=
|
||||
dependencies:
|
||||
assertion-error "^1.0.1"
|
||||
check-error "^1.0.1"
|
||||
@ -49,6 +67,7 @@ chai@^4.1.2:
|
||||
chalk@^2.3.1:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65"
|
||||
integrity sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==
|
||||
dependencies:
|
||||
ansi-styles "^3.2.1"
|
||||
escape-string-regexp "^1.0.5"
|
||||
@ -57,46 +76,56 @@ chalk@^2.3.1:
|
||||
check-error@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
|
||||
integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=
|
||||
|
||||
color-convert@^1.9.0:
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
|
||||
integrity sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==
|
||||
dependencies:
|
||||
color-name "^1.1.1"
|
||||
|
||||
color-name@^1.1.1:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
|
||||
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
|
||||
|
||||
deep-eql@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
|
||||
integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==
|
||||
dependencies:
|
||||
type-detect "^4.0.0"
|
||||
|
||||
diff@^3.4.0:
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
|
||||
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
|
||||
|
||||
escape-string-regexp@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
|
||||
|
||||
get-func-name@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
|
||||
integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=
|
||||
|
||||
glob@^7.0.6:
|
||||
version "7.1.2"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
|
||||
integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
@ -108,10 +137,12 @@ glob@^7.0.6:
|
||||
has-flag@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
|
||||
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
|
||||
dependencies:
|
||||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
@ -119,14 +150,17 @@ inflight@^1.0.4:
|
||||
inherits@2:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||
|
||||
jasmine-core@~3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.1.0.tgz#a4785e135d5df65024dfc9224953df585bd2766c"
|
||||
integrity sha1-pHheE11d9lAk38kiSVPfWFvSdmw=
|
||||
|
||||
jasmine@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.1.0.tgz#2bd59fd7ec6ec0e8acb64e09f45a68ed2ad1952a"
|
||||
integrity sha1-K9Wf1+xuwOistk4J9Fpo7SrRlSo=
|
||||
dependencies:
|
||||
glob "^7.0.6"
|
||||
jasmine-core "~3.1.0"
|
||||
@ -134,41 +168,50 @@ jasmine@^3.1.0:
|
||||
minimatch@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimist@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
|
||||
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
|
||||
|
||||
once@^1.3.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
|
||||
dependencies:
|
||||
wrappy "1"
|
||||
|
||||
path-is-absolute@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
|
||||
|
||||
pathval@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0"
|
||||
integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA=
|
||||
|
||||
supports-color@^5.3.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0"
|
||||
integrity sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==
|
||||
dependencies:
|
||||
has-flag "^3.0.0"
|
||||
|
||||
type-detect@^4.0.0:
|
||||
version "4.0.8"
|
||||
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
|
||||
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
|
||||
|
||||
typescript@~3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.1.tgz#3362ba9dd1e482ebb2355b02dfe8bcd19a2c7c96"
|
||||
integrity sha512-Veu0w4dTc/9wlWNf2jeRInNodKlcdLgemvPsrNpfu5Pq39sgfFjvIIgTsvUHCoLBnMhPoUA+tFxsXjU6VexVRQ==
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
|
||||
|
9
tools/tsconfig-test.json
Normal file
9
tools/tsconfig-test.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"types": [
|
||||
"node",
|
||||
"jasmine"
|
||||
]
|
||||
},
|
||||
}
|
@ -18,7 +18,10 @@
|
||||
"dom"
|
||||
],
|
||||
"target": "es5",
|
||||
"skipLibCheck": true
|
||||
"skipLibCheck": true,
|
||||
"types": [
|
||||
"node"
|
||||
]
|
||||
},
|
||||
"exclude": [
|
||||
"testing",
|
||||
|
Reference in New Issue
Block a user