diff --git a/docs/esbuild.md b/docs/esbuild.md
index 3b4d458ab0..1c501d11f6 100755
--- a/docs/esbuild.md
+++ b/docs/esbuild.md
@@ -103,8 +103,9 @@ This will create an output directory containing all the code split chunks, along
esbuild(name, args, args_json, config, define, deps, entry_point, entry_points, external, format,
- launcher, link_workspace_root, max_threads, minify, node_context_data, output, output_css,
- output_dir, output_map, platform, sourcemap, sources_content, splitting, srcs, target)
+ launcher, link_workspace_root, max_threads, metafile, minify, node_context_data, output,
+ output_css, output_dir, output_map, platform, sourcemap, sources_content, splitting, srcs,
+ target)
Runs the esbuild bundler under Bazel
@@ -218,6 +219,12 @@ For general use, leave this attribute unset.
Defaults to `0`
+
+
+(*Boolean*): if true, esbuild creates a metafile along the output
+
+Defaults to `True`
+
minify
(*Boolean*): Minifies the bundle with the built in minification.
@@ -306,7 +313,7 @@ Defaults to `[]`
target
-(*String*): Environment target (e.g. es2017, chrome58, firefox57, safari11,
+(*String*): Environment target (e.g. es2017, chrome58, firefox57, safari11,
edge16, node10, esnext). Default es2015.
See https://esbuild.github.io/api/#target for more details
diff --git a/packages/esbuild/esbuild.bzl b/packages/esbuild/esbuild.bzl
index 28966250ce..7fa217dc85 100644
--- a/packages/esbuild/esbuild.bzl
+++ b/packages/esbuild/esbuild.bzl
@@ -70,7 +70,7 @@ def _esbuild_impl(ctx):
# Also disable the log limit and show all logs
"logLevel": "warning",
"logLimit": 0,
- "metafile": True,
+ "metafile": ctx.attr.metafile,
"platform": ctx.attr.platform,
"preserveSymlinks": True,
"sourcesContent": ctx.attr.sources_content,
@@ -146,9 +146,10 @@ def _esbuild_impl(ctx):
launcher_args.add("--esbuild_args=%s" % args_file.path)
# add metafile
- meta_file = ctx.actions.declare_file("%s_metadata.json" % ctx.attr.name)
- outputs.append(meta_file)
- launcher_args.add("--metafile=%s" % meta_file.path)
+ if ctx.attr.metafile:
+ meta_file = ctx.actions.declare_file("%s_metadata.json" % ctx.attr.name)
+ outputs.append(meta_file)
+ launcher_args.add("--metafile=%s" % meta_file.path)
# add reference to the users args file, these are merged within the launcher
if ctx.attr.args_json:
@@ -282,6 +283,11 @@ This can be useful if running many esbuild rule invocations in parallel, which h
For general use, leave this attribute unset.
""",
),
+ "metafile": attr.bool(
+ default = True,
+ doc = "if true, esbuild creates a metafile along the output",
+ mandatory = False,
+ ),
"minify": attr.bool(
default = False,
doc = """Minifies the bundle with the built in minification.
@@ -350,7 +356,7 @@ See https://esbuild.github.io/api/#splitting and https://esbuild.github.io/api/#
),
"target": attr.string(
default = "es2015",
- doc = """Environment target (e.g. es2017, chrome58, firefox57, safari11,
+ doc = """Environment target (e.g. es2017, chrome58, firefox57, safari11,
edge16, node10, esnext). Default es2015.
See https://esbuild.github.io/api/#target for more details
diff --git a/packages/esbuild/launcher.js b/packages/esbuild/launcher.js
index 0406ace76a..cd0e606d3a 100755
--- a/packages/esbuild/launcher.js
+++ b/packages/esbuild/launcher.js
@@ -99,7 +99,7 @@ async function runOneBuild(args, userArgsFilePath, configFilePath) {
...getEsbuildArgs(userArgsFilePath)
}
}
-
+
if (configFilePath) {
const config = await processConfigFile(configFilePath, args);
args = {
@@ -107,12 +107,13 @@ async function runOneBuild(args, userArgsFilePath, configFilePath) {
...config
};
}
-
- const metafile = getFlag('--metafile');
-
+
try {
const result = await esbuild.build(args);
- writeFileSync(metafile, JSON.stringify(result.metafile));
+ if (result.metafile) {
+ const metafile = getFlag('--metafile');
+ writeFileSync(metafile, JSON.stringify(result.metafile));
+ }
} catch (e) {
console.error(e);
process.exit(1);
diff --git a/packages/esbuild/test/metafile/BUILD.bazel b/packages/esbuild/test/metafile/BUILD.bazel
new file mode 100644
index 0000000000..79c679ea86
--- /dev/null
+++ b/packages/esbuild/test/metafile/BUILD.bazel
@@ -0,0 +1,24 @@
+load("//packages/esbuild:index.bzl", "esbuild")
+
+esbuild(
+ name = "lib",
+ srcs = [
+ ":main.js",
+ ],
+ entry_point = "main.js",
+ metafile = False,
+)
+
+sh_test(
+ name = "test",
+ size = "small",
+ srcs = [
+ "test.sh",
+ ],
+ args = [
+ "$(locations :lib)",
+ ],
+ data = [
+ ":lib",
+ ],
+)
diff --git a/packages/esbuild/test/metafile/main.js b/packages/esbuild/test/metafile/main.js
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/esbuild/test/metafile/test.sh b/packages/esbuild/test/metafile/test.sh
new file mode 100755
index 0000000000..fc39fd94db
--- /dev/null
+++ b/packages/esbuild/test/metafile/test.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+set -uo pipefail;
+
+while [ "$#" -ne 0 ]; do
+ [[ "lib_metadata.json" == "$(basename $1)" ]] && exit 1;
+ shift;
+done