Gauntlet
Lightning-fast front-end tool which does put a smile on my face
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 wholedeno.land/x
) - Most core features shall be event-driven, using the available type-safe
EventEmitter
implementation inimports/deno_events.ts
which is based ondeno_events
- Test files (
**/*.test.ts
) use the available Jest-like matchers inimports/expect.ts
which are based onexpect
License
Gauntlet is currently licensed under Apache License, Version 2.0.
© Copyright 2021 Tom Bazarnik.