Skip to main content

Gauntlet

Lightning-fast front-end tool which does put a smile on my face

Current cache size

Overview

Gauntlet is a work-in-progress naive and fast ES Modules powered frontend tool based on Deno and ESBuild.

Goals

  • Very fast
  • Browser-compatible at the core, modularized codebase (no deps.ts)
  • Discoverable
  • Subscribable, log and watch for any event the way you want
  • Supports Snowpack plugins (planned!)
  • Supports TypeScript and JSX via ESBuild

Contributing

Submitting a Pull Request

Here is a couple of rules of thumb for any submitted pull request:

  • Please be respectful and mindful of your language
  • Please use english language for any comment through Github or the source code
  • Fork the hereby repo and follow the Github flow
  • Give the PR a descriptive title

Building from source

Clone the hereby repo or, if intending to submit a PR, your own fork.

git clone https://github.com/tommywalkie/gauntlet
Prerequisites
  • Deno 1.8+
  • Deno Visual Studio Code extension

Note: No need to install ESBuild yourself, this is done automatically by the official Deno module itself, or retrieved via network if using the WebAssembly version.

Usage

Install the cli.ts script as a command-line tool via Deno.

deno install -A --unstable --no-check <your-repo>/cli.ts
# ✅ Successfully installed gauntlet

Now you can run the actual program.

gauntlet --help   # Open the help guide
gauntlet dev      # Run the development server

Testing

Launch tests with the following Deno command.

Note: We need both -A and --unstable flags in order to launch file watching and build pipeline related tests.

deno test -A --unstable

Style guide

Contributing section is still work-in-progress, but here is the basic idea:

  • All the platform-agnostic source code shall reside in src/core/
  • Similarly to Meteor projects, individual dependencies shall be settled under imports/
  • Gauntlet is intended to be built upon, please don’t bring any bare import mechanism
  • Avoid cyclic imports
  • Prefer JS/TS/native dependencies over WebAssembly ones unless necessary (e.g. ESBuild for the browser)
  • Prefer modularized dependencies over heavy centralized ones using, inter alia, the deps.ts convention (i.e. please don’t make accustomed Lodash users vendor the whole deno.land/x)
  • Most core features shall be event-driven, using the available type-safe EventEmitter implementation in imports/deno_events.ts which is based on deno_events
  • Test files (**/*.test.ts) use the available Jest-like matchers in imports/expect.ts which are based on expect

License

Gauntlet is currently licensed under Apache License, Version 2.0.

© Copyright 2021 Tom Bazarnik.