typed-cli
A library to help you create type-safe CLI's fast and simple.
Project state
This project is still alive and maintained. But it is not in active development.
Usage example
import {cli, option} from 'typed-cli';
import app from './app';
const {options} = cli({
options: {
env: option.oneOf(['dev', 'prod'] as const)
.alias('e')
.required()
.description('app environment'),
port: option.int
.alias('p')
.default(80)
.description('port'),
}
});
// port: number
// env: 'dev' | 'prod'
const {port, env} = options;
const DB_HOSTS = {
dev: 'localhost:1234',
prod: '1.2.3.4:9999',
} as const;
// Type safe!
// no "No index signature with a parameter of type 'string'" kind of errors
// because typeof env is 'dev' | 'prod'
app.run({
db: DB_HOSTS[env],
port
});
This code will behave like this:
Playground
You can test it without installing anything on your machine. Just go to the
(
Key features
- Type safety
- input validation (customizable)
- help generation
- printing reports for invalid data
- tab completions
- input data transformation
- support for commands
Documentation
The docs can be found here: https://int0h.github.io/typed-cli-docs/