viteshell
Version:
A minimalistic shell implementation written in TypeScript.
76 lines (53 loc) • 3.54 kB
Markdown
<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).