mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
183 lines
4.9 KiB
Python
183 lines
4.9 KiB
Python
load("@aspect_rules_esbuild//esbuild:defs.bzl", _esbuild = "esbuild")
|
|
load("@bazel_lib//lib:copy_file.bzl", "copy_file")
|
|
load("@npm//:typescript/package_json.bzl", tsc = "bin")
|
|
|
|
def zone_bundle(
|
|
name,
|
|
testonly = False,
|
|
deps = [],
|
|
entry_point = None,
|
|
external = []):
|
|
"""
|
|
Runs esbuild and tsc for downleveling to es5 to produce a number of output bundles.
|
|
|
|
es2015 iife : "%{name}.es2015.js"
|
|
es2015 iife minified : "%{name}.min.es2015.js"
|
|
es2015 iife minified (debug) : "%{name}.min_debug.es2015.js"
|
|
esm : "%{name}.esm.js"
|
|
esm : "%{name}.min.esm.js"
|
|
es5 iife : "%{name}.js"
|
|
es5 iife minified : "%{name}.min.js"
|
|
es5 iife minified (debug) : "%{name}.min_debug.js"
|
|
es5 umd : "%{name}.es5umd.js"
|
|
es5 umd minified : "%{name}.min.es5umd.js"
|
|
es2015 umd : "%{name}.umd.js"
|
|
es2015 umd minified : "%{name}.min.umd.js"
|
|
"""
|
|
|
|
def esbuild(**kwargs):
|
|
_esbuild(
|
|
sourcemap = False,
|
|
testonly = testonly,
|
|
external = external,
|
|
**kwargs
|
|
)
|
|
|
|
esbuild(
|
|
name = name + ".esm",
|
|
entry_point = entry_point,
|
|
config = "//packages/zone.js/tools:esm",
|
|
deps = deps,
|
|
)
|
|
esbuild(
|
|
name = name + ".min.esm",
|
|
entry_point = entry_point,
|
|
config = "//packages/zone.js/tools:esm",
|
|
deps = deps,
|
|
minify = True,
|
|
)
|
|
|
|
# es2015
|
|
esbuild(
|
|
name = name + ".es2015",
|
|
entry_point = entry_point,
|
|
config = "//packages/zone.js/tools:iife",
|
|
target = "es2015",
|
|
deps = deps,
|
|
)
|
|
esbuild(
|
|
name = name + ".min.es2015",
|
|
entry_point = entry_point,
|
|
config = "//packages/zone.js/tools:iife",
|
|
target = "es2015",
|
|
deps = deps,
|
|
minify = True,
|
|
)
|
|
esbuild(
|
|
name = name + ".min_debug.es2015",
|
|
entry_point = entry_point,
|
|
config = "//packages/zone.js/tools:iife",
|
|
target = "es2015",
|
|
deps = deps,
|
|
minify = True,
|
|
)
|
|
|
|
# es5
|
|
es5_out_dir = "es5"
|
|
es5_out_file = "%s/%s.es2015.js" % (es5_out_dir, name)
|
|
|
|
tsc.tsc(
|
|
name = name,
|
|
outs = [es5_out_file],
|
|
srcs = [name + ".es2015.js"],
|
|
chdir = native.package_name(),
|
|
args = [
|
|
"%s.es2015.js" % name,
|
|
"--types",
|
|
"--skipLibCheck",
|
|
"--target",
|
|
"es5",
|
|
"--lib",
|
|
"es2015,dom",
|
|
"--allowJS",
|
|
"--outDir",
|
|
es5_out_dir,
|
|
],
|
|
)
|
|
|
|
copy_file(
|
|
name = name + ".es5",
|
|
src = es5_out_file,
|
|
out = name + ".js",
|
|
)
|
|
|
|
esbuild(
|
|
name = name + ".min",
|
|
entry_point = name + ".js",
|
|
config = "//packages/zone.js/tools:iife",
|
|
target = "es5",
|
|
srcs = [
|
|
name + ".js",
|
|
],
|
|
minify = True,
|
|
)
|
|
esbuild(
|
|
name = name + ".min_debug",
|
|
entry_point = name + ".js",
|
|
config = "//packages/zone.js/tools:iife",
|
|
target = "es5",
|
|
srcs = [
|
|
name + ".js",
|
|
],
|
|
minify = True,
|
|
)
|
|
|
|
# umd
|
|
|
|
esbuild(
|
|
name = name + ".umd",
|
|
entry_point = entry_point,
|
|
config = "//packages/zone.js/tools:umd",
|
|
deps = deps,
|
|
)
|
|
esbuild(
|
|
name = name + ".min.umd",
|
|
entry_point = entry_point,
|
|
config = "//packages/zone.js/tools:umd",
|
|
deps = deps,
|
|
minify = True,
|
|
)
|
|
|
|
# es5 umd downleveling
|
|
es5_umd_dir = "dist/es5umd"
|
|
es5_umd_file = "%s/%s.umd.js" % (es5_umd_dir, name)
|
|
|
|
# First we use TS to downlevel to es5. A couple of notes:
|
|
# 1. We can't use esbuild for this, because they don't support es5 fully.
|
|
# 2. The file is generated in a sub-directory using --outDir,
|
|
# because --outFile will be removed in an upcoming TS version.
|
|
# 3. Since --outDir creates a sub-directory, we have to copy the file back out.
|
|
# That happens in the `copy_file` call below.
|
|
tsc.tsc(
|
|
name = name + ".es5umd_downlevel",
|
|
outs = [es5_umd_file],
|
|
chdir = native.package_name(),
|
|
srcs = [name + ".umd.js"],
|
|
args = [
|
|
"%s.umd.js" % name,
|
|
"--types",
|
|
"--skipLibCheck",
|
|
"--target",
|
|
"es5",
|
|
"--lib",
|
|
"es2015,dom",
|
|
"--allowJS",
|
|
"--outDir",
|
|
es5_umd_dir,
|
|
],
|
|
)
|
|
|
|
copy_file(
|
|
name = name + ".es5umd",
|
|
src = es5_umd_file,
|
|
out = name + ".es5umd.js",
|
|
)
|
|
|
|
esbuild(
|
|
name = name + ".min.es5umd",
|
|
entry_point = es5_umd_file,
|
|
config = "//packages/zone.js/tools:umd",
|
|
target = "es5",
|
|
srcs = [es5_umd_file],
|
|
minify = True,
|
|
)
|