esbuild-config 0.1.0

A short description of my package
Documentation

esbuild-config

Config files for 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 :)

Install

Install it with npm:

npm i -g esbuild-config

Or from by downloading it from the latest release.

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)

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

License

MIT