# web-gash

> Terminal web game framework in React.

Latest version **0.0.16** (published 2021-08-13) · MIT license · 0 weekly downloads

## Install

```sh
npm install web-gash
pnpm add web-gash
yarn add web-gash
bun add web-gash
```

## Health

**Score 30/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.16 |
| Published | 2021-08-13 |
| First published | 2021-07-08 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 1 |
| Unpacked size | 926.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Vaclav Honzik |
| Maintainers | vhonzik |
| Keywords | terminal, game, react, typescript, console |

## Links

- npm: https://www.npmjs.com/package/web-gash
- Repository: https://github.com/VHonzik/web-gash
- Homepage: https://github.com/VHonzik/web-gash#readme
- Issues: https://github.com/VHonzik/web-gash/issues
- npm.io page: https://npm.io/package/web-gash

## Dependencies (1)

- [@masala/parser](https://npm.io/package/@masala/parser.md) ^1.0.0

## Alternatives

- [mobx-react](https://npm.io/package/mobx-react.md) — 2.8M weekly downloads
- [rc-tree](https://npm.io/package/rc-tree.md) — 2.6M weekly downloads
- [@react-oauth/google](https://npm.io/package/@react-oauth/google.md) — 1.3M weekly downloads
- [@wagmi/connectors](https://npm.io/package/@wagmi/connectors.md) — 877.0K weekly downloads
- [vee-validate](https://npm.io/package/vee-validate.md) — 836.4K weekly downloads

## Recent versions

- 0.0.16 (latest) — 2021-08-13
- 0.0.15 — 2021-08-12
- 0.0.14 — 2021-07-28
- 0.0.13 — 2021-07-26
- 0.0.12 — 2021-07-21
- 0.0.11 — 2021-07-21
- 0.0.10 — 2021-07-21
- 0.0.9 — 2021-07-20
- 0.0.8 — 2021-07-19
- 0.0.7 — 2021-07-19
- 0.0.6 — 2021-07-15
- 0.0.5 — 2021-07-15
- 0.0.4 — 2021-07-13
- 0.0.3 — 2021-07-12
- 0.0.2 — 2021-07-11
- … 1 more at https://npm.io/package/web-gash/versions

## README

# web-gash

[![npm version](https://badge.fury.io/js/web-gash.svg)](https://badge.fury.io/js/web-gash)
[![Build Status](https://travis-ci.com/VHonzik/web-gash.svg?branch=main)](https://travis-ci.com/VHonzik/web-gash)
[![Coverage Status](https://coveralls.io/repos/github/VHonzik/web-gash/badge.svg?branch=main)](https://coveralls.io/github/VHonzik/web-gash?branch=main)

Acronym for game-again shell, borrowing the pun from [Bash (Unix shell)](https://en.wikipedia.org/wiki/Bash_(Unix_shell)), *web-gash* is a JS library for web console games.

This library is a port and successor to my .NET core [gash](https://github.com/VHonzik/gash) library.

## Features
- Runs inside modern browsers for even more cross-platform opportunities
- Fully functional and already styled terminal [React](https://reactjs.org/) component
- Command driven logic
  - Well documented and typed interface to define and register new commands with robust parsing helpers
  - Commands have syntax inspired by Unix shell commands including parameters and options support
  - Built-in Unix inspired "man" type of command for manual pages of commands and keywords
  - Built-in "list available commands" command
- Built-in tab auto-complete functionality
- Unix shell style command history (up/down arrows)
- Written in [Typescript](https://www.typescriptlang.org/)
- Very quick to set-up if you have a React app

## Getting started

I suggest starting with Typescript template of [Create React App](https://create-react-app.dev/docs/getting-started#creating-a-typescript-app).

### Installation

You can install the package with npm: `npm install web-gash`

### Set-up

First we need to initialize the *gash* library:

```js
// index.tsx/index.js or similar entry-point

import Gash from 'web-gash';

// Before ReactDOM.render initialize the gash library. Note that unless you pass `false` to the `init` gash will automatically register the built-in commands `man` and `list`.
Gash.init();

ReactDOM.render(
//...
```

The default styling uses [Inconsolata](https://fonts.google.com/specimen/Inconsolata) font from Google Fonts library. I chose not to ship it with *gash* but you can easily add it to your app, for example with css import:

```css
/* Add to the top of index.css */
@import url('https://fonts.googleapis.com/css2?family=Inconsolata:wght@400;700&display=swap');
```

Then finally we add the `Terminal` component to our app:

```js
import { Terminal } from 'web-gash';

// App.tsx/App.js or similar top-level component
function App() {
  return (
    <Terminal />
  );
}
```

And that's it, once you start the app you will see a full-screen styled terminal and you can start calling commands such as `man man` and play around with Tab auto-completion or command history. Next step is adding your own commands and keywords, see [this documentation page](./Commands.md).

---
_Source: https://npm.io/package/web-gash · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
