# viteshell

> A minimalistic shell implementation written in TypeScript.

Latest version **0.8.1** (published 2024-04-11) · MIT license · 0 weekly downloads

## Install

```sh
npm install viteshell
pnpm add viteshell
yarn add viteshell
bun add viteshell
```

## 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.8.1 |
| Published | 2024-04-11 |
| First published | 2023-08-09 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=14 |
| Dependencies | 0 |
| Unpacked size | 50.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 4 |
| Author | Henry Hale |
| Maintainers | devhenryhale |
| Keywords | bash, cli, command, console, executor, sh, shell, terminal |

## Links

- npm: https://www.npmjs.com/package/viteshell
- Repository: https://github.com/henryhale/viteshell
- Homepage: https://github.com/henryhale/viteshell#readme
- Issues: https://github.com/henryhale/viteshell/issues
- npm.io page: https://npm.io/package/viteshell

## Alternatives

- [@salesforce/cli](https://npm.io/package/@salesforce/cli.md) — 389.7K weekly downloads
- [@mintlify/cli](https://npm.io/package/@mintlify/cli.md) — 208.9K weekly downloads
- [@grafana/e2e-selectors](https://npm.io/package/@grafana/e2e-selectors.md) — 128.7K weekly downloads
- [mintlify](https://npm.io/package/mintlify.md) — 112.0K weekly downloads
- [@intlayer/cli](https://npm.io/package/@intlayer/cli.md) — 22.8K weekly downloads

## Recent versions

- 0.8.1 (latest) — 2024-04-11
- 0.8.0 — 2024-04-03
- 0.7.0 — 2024-01-14
- 0.6.11 — 2024-01-05
- 0.6.10 — 2023-12-29
- 0.6.9 — 2023-12-29
- 0.6.8 — 2023-12-29
- 0.6.7 — 2023-12-21
- 0.6.6 — 2023-12-19
- 0.6.5 — 2023-12-19
- 0.6.4 — 2023-12-18
- 0.6.3 — 2023-12-08
- 0.6.2 — 2023-12-08
- 0.6.1 — 2023-12-08
- 0.6.0 — 2023-12-08
- … 11 more at https://npm.io/package/viteshell/versions

## README

<div align="center">
<img width="45" src="./media/logo.jpg"/>
<h1>viteshell</h1>
<p>A minimalistic shell implementation written in TypeScript.</p>
<img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/henryhale/viteshell/release.yml">
<img alt="npm" src="https://img.shields.io/npm/v/viteshell">
<img alt="GitHub release (latest SemVer)" src="https://img.shields.io/github/v/release/henryhale/viteshell">
<img alt="npm bundle size" src="https://img.shields.io/bundlephobia/minzip/viteshell">
<img alt="GitHub" src="https://img.shields.io/github/license/henryhale/viteshell">
</div>

## What is `viteshell`?

`viteshell` comes from [vite](https://en.wiktionary.org/wiki/vite), a French word for "quick" and [shell](https://en.wikipedia.org/wiki/Unix_shell), a program that executes other programs in response to text commands.

`viteshell` is lightweight shell implementation written in TypeScript that tends to work just like [bash](https://www.gnu.org/software/bash/). It is intended for use with [xterminal](https://github.com/henryhale/xterminal) but can as well be used elsewhere.

## Key Features

- **Perfomant**: It is lightweight and really fast.
- **Efficient Execution**: Commands are executed asynchronously (with promises).
- **TypeScript Support**: Type declaration files are provided for smooth development.
- **Shell Expansion**: Variable and alias substitution
- **Command Chaining & Pipes**: Piping & Chaininig commands using `;`, `|`, `&&` and `||`
- **Builtin Commands**: Contains commands such as _exit, clear, pwd, echo, alias, unalias, export, history & help_.
- **NodeJS-like Process object**: Contains _env, argv, stdout, and more_.
- **Alias**: Manage command aliases
- **Environment Variables**: Manage command aliases
- **Backup & Restore**: Save or restore the shell state
- **Abort signal**: Execution of a command can be aborted
- **Execution Timeout**: Command execution time limit

> **Note**: Currently, `viteshell` only provides a platform for handling some basic shell operations. Support for other functionalities like input/output redirection, shell scripts, complex shell expansion and job control is not provided.  

## Documentation
To get started with `viteshell`, read the [documentation here](https://viteshell.js.org).

## Live Demo
The demo allows you to explore the features of `viteshell` and interact with the key functionalities.
Click the link below to access the live demo:

[🚀 Live Demo](https://henryhale.github.io/vix)

## Browser Support

Promises and some other latest ECMAScript features are used in the source code.
Supporting a wide range of browsers is the goal. Modern browsers, most specifically the latest versions of Chrome, Firefox, Safari, and Edge (for desktop and mobile devices) are supported.

## Development

To get started with development, follow these steps:

### Prerequisites

- [Node.js](https://nodejs.org) (>=14)
- [pnpm](https://pnpm.io/) (>=7)

### Setup

1. Clone this repository: `git clone https://github.com/henryhale/viteshell.git`
2. Navigate to the project directory: `cd viteshell`
3. Install dependencies: `pnpm install`
4. Development: `pnpm dev`
5. Run tests using: `pnpm test`

### Building the Library

To build the library, run `pnpm build`

This will generate the production-ready distribution files in the `dist` directory.

## License

Copyright (c) 2023-Present [Henry Hale](https://github.com/henryhale).

Released under the [MIT License](https://github.com/henryhale/viteshell/blob/master/LICENSE.txt).

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