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
- π Power β Very fast
- π Space β Browser-compatible at the core, modularized codebase (no
deps.ts
) - π Time β Discoverable, backed by XState statecharts (planned!)
- π Mind β Subscribable, log and watch for any event the way you want
- π Soul β Supports Snowpack plugins (planned!)
- π Reality β 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 <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 Deno:
deno test
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/
- 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
EventEmitter
implementation inimports/deno_events.ts
which is based ondeno_events
for type safety - Test files (
**/*.test.ts
) use the available Jest-like matchers inimports/expect.ts
which are based onexpect
Dependency graph via Deno Visualizer, using mod.ts
as entrypoint
License
Gauntlet is currently licensed under Apache License, Version 2.0.
Β© Copyright 2021 Tom Bazarnik.