Skip to content

Releases: bpierre/esbuild-config

1.0.1: Fix a binary path issue on Windows

22 Sep 18:08
e9be583
Compare
Choose a tag to compare

1.0.0: support arm64 on macOS and Linux

22 Sep 17:33
b38a231
Compare
Choose a tag to compare

This version adds support for macOS universal binaries (x86_64 + arm64) and Linux arm64 (useful for Docker on macOS).

esbuild-config 0.2.0

28 Sep 15:10
42cffcc
Compare
Choose a tag to compare

This version allows the configuration to be defined directly in the package.json file, using the "esbuild" field.

Thanks @dalcib for the idea 🙏

esbuild-config 0.1.0

28 Aug 19:13
d68058c
Compare
Choose a tag to compare

First release of esbuild-config. This little utility provides config files to esbuild.

Why?

esbuild is an incredible tool, that is exclusively using command line parameters as a configuration syntax. Some people prefer configuration files, so I thought it could be a good idea to provide a solution for this. It is also for me a pretext to use Rust while learning it :)

Usage

The esbuild-config command outputs a list of parameters based on a esbuild.config.json file, that can get passed to esbuild directly:

esbuild $(esbuild-config)

It detects the presence of esbuild.config.json in the current directory, or the project root (using the presence of a package.json file). Any file can also get provided as a parameter:

esbuild $(esbuild-config ./my-conf.json)

Install

You have different options to install esbuild-config.

npm

Install globally with npm using the following command:

npm install --global esbuild-config

You can also add it to your project:

npm install --save-dev esbuild-config

Cargo

Install it with Cargo using the following command:

cargo install esbuild-config

Binaries

You can download the precompiled binaries from the release page.

From source

To clone the repository and build esbuild-config, run these commands (after having installed Rust):

git clone git@github.com:bpierre/esbuild-config.git
cd esbuild-config
cargo build --release

The compiled binary is at target/release/esbuild-config.

Syntax

esbuild-config doesn’t do any validation on the configuration values: it only converts JSON types into arguments that are compatible with the format esbuild uses for its arguments. This makes it independent from esbuild versions, assuming the format doesn’t change.

The only exception to this is the entry field, which gets converted into a list of file names (when an array is provided) or a single file name (when a string is provided).

This is how JSON types get converted:

{
  "entry": "./index.js",
  "outfile": "./bundle.js",
  "external": ["react", "react-dom"],
  "loader": { ".js": "jsx", ".png": "base64" },
  "minify": true
}

Output:

--outfile=./bundle.js --minify --external:react --external:react-dom --loader:.js=jsx --loader:.png=base64 ./index.js

Notice how the entry, ./index.js, has been moved to the end. esbuild-config also takes care of escaping the parameters as needed (e.g. by adding quotes).

Contribute

# Run the app
cargo run

# Run the tests
cargo test

# Generate the code coverage report
cargo tarpaulin -o Html

Special thanks

esbuild and its author obviously, not only for esbuild itself but also for its approach to install a platform-specific binary through npm, that esbuild-config is also using.