Skip to content

Commit

Permalink
feat(esbuild): add option to disable metafile generation (#3066)
Browse files Browse the repository at this point in the history
  • Loading branch information
mgred committed Nov 11, 2021
1 parent e1b919a commit 2960f54
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 13 deletions.
13 changes: 10 additions & 3 deletions docs/esbuild.md
Expand Up @@ -103,8 +103,9 @@ This will create an output directory containing all the code split chunks, along

<pre>
esbuild(<a href="#esbuild-name">name</a>, <a href="#esbuild-args">args</a>, <a href="#esbuild-args_json">args_json</a>, <a href="#esbuild-config">config</a>, <a href="#esbuild-define">define</a>, <a href="#esbuild-deps">deps</a>, <a href="#esbuild-entry_point">entry_point</a>, <a href="#esbuild-entry_points">entry_points</a>, <a href="#esbuild-external">external</a>, <a href="#esbuild-format">format</a>,
<a href="#esbuild-launcher">launcher</a>, <a href="#esbuild-link_workspace_root">link_workspace_root</a>, <a href="#esbuild-max_threads">max_threads</a>, <a href="#esbuild-minify">minify</a>, <a href="#esbuild-node_context_data">node_context_data</a>, <a href="#esbuild-output">output</a>, <a href="#esbuild-output_css">output_css</a>,
<a href="#esbuild-output_dir">output_dir</a>, <a href="#esbuild-output_map">output_map</a>, <a href="#esbuild-platform">platform</a>, <a href="#esbuild-sourcemap">sourcemap</a>, <a href="#esbuild-sources_content">sources_content</a>, <a href="#esbuild-splitting">splitting</a>, <a href="#esbuild-srcs">srcs</a>, <a href="#esbuild-target">target</a>)
<a href="#esbuild-launcher">launcher</a>, <a href="#esbuild-link_workspace_root">link_workspace_root</a>, <a href="#esbuild-max_threads">max_threads</a>, <a href="#esbuild-metafile">metafile</a>, <a href="#esbuild-minify">minify</a>, <a href="#esbuild-node_context_data">node_context_data</a>, <a href="#esbuild-output">output</a>,
<a href="#esbuild-output_css">output_css</a>, <a href="#esbuild-output_dir">output_dir</a>, <a href="#esbuild-output_map">output_map</a>, <a href="#esbuild-platform">platform</a>, <a href="#esbuild-sourcemap">sourcemap</a>, <a href="#esbuild-sources_content">sources_content</a>, <a href="#esbuild-splitting">splitting</a>, <a href="#esbuild-srcs">srcs</a>,
<a href="#esbuild-target">target</a>)
</pre>

Runs the esbuild bundler under Bazel
Expand Down Expand Up @@ -218,6 +219,12 @@ For general use, leave this attribute unset.

Defaults to `0`

<h4 id="esbuild-metafile">metafile</h4>

(*Boolean*): if true, esbuild creates a metafile along the output

Defaults to `True`

<h4 id="esbuild-minify">minify</h4>

(*Boolean*): Minifies the bundle with the built in minification.
Expand Down Expand Up @@ -306,7 +313,7 @@ Defaults to `[]`

<h4 id="esbuild-target">target</h4>

(*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
Expand Down
16 changes: 11 additions & 5 deletions packages/esbuild/esbuild.bzl
Expand Up @@ -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,
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down
11 changes: 6 additions & 5 deletions packages/esbuild/launcher.js
Expand Up @@ -99,20 +99,21 @@ async function runOneBuild(args, userArgsFilePath, configFilePath) {
...getEsbuildArgs(userArgsFilePath)
}
}

if (configFilePath) {
const config = await processConfigFile(configFilePath, args);
args = {
...args,
...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);
Expand Down
24 changes: 24 additions & 0 deletions 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",
],
)
Empty file.
8 changes: 8 additions & 0 deletions 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

0 comments on commit 2960f54

Please sign in to comment.