
Company News
Socket Has Acquired Secure Annex
Socket has acquired Secure Annex to expand extension security across browsers, IDEs, and AI tools.
Use a hierarchical directory tree to hold your CLI app multi-level subcommands.
This came about from a desire to add more structure to a tool with many nested subcommands, something that can be achieved in other modules, but often with a non-trivial amount of boilerplate. From a performance standpoint Cliche is lazy loading to be as quick as possible even when dealing with very large numbers of subcommands.
For those that like backronyms, how about: CLI Command Hierarchy Executor?
Install with npm.
npm install cliche
index.js
'use strict'
const cliche = require('cliche')
cliche({
name: 'cliche-example',
root: './app',
routes: [
'commander',
'foo/bar',
'foo/baz',
'hello/world'
]
})
app structure
example
├── app
│  ├── commander.js # example integration with commander
│  ├── foo
│  │  ├── bar.js # example commands
│  │  ├── baz.js
│  │  └── .meta.js # metadata for the foo group
│  ├── hello
│  │  └── world.js
│  ├── .meta.js # metadata for the root group
│  └── .version.js # version information
├── index.js
└── package.json
Cliche can integrate with other CLI frameworks and option parsers on a command
by command basis. An example integration with commander can be
found in example/app/commander.js.
A very complementary module is glob which can remove the overhead of
maintaining a list of routes. An example of how this can be achieved can be
found in example/globbed.js.
There are two levels of metadata: the command level and the directory level.
Currently the only metadata supported for commands is a description used for
generating usage information. It can be set on module.exports.description of
the relevant command.
$ node example hello
[...]
Available subcommands:
world a computer program that outputs "Hello, World!"
Directories function as parent commands, and as such have both a short
description which acts as a summary when viewing the parent command, and
a longer, more informational about to be shown when in the current command.
These values are contained in .meta.js files in the directory itself.
$ node example
[...]
Available subcommands:
foo serves only to demonstrate a concept
$ node example foo
usage: cliche-example foo <command> [<args>]
A parent to both the bar and baz nested subcommands.
Available subcommands:
[...]
A top-level --version flag can be supported by providing a .version.js
file.
$ node example --version
version 1.0.0
All commands shown in this file can be run from the root of the repo, and the example project can be copied to use as a base for a new project. The example app is fully usable to get a feel for how Cliche works, here are some commands to try:
$ node example
$ node example --version
$ node example foo
$ node example foo bar now we can pass some arguments
$ node example hello world
$ node example commander --cherries
FAQs
The simple lazy-loading command-line router
The npm package cliche receives a total of 146 weekly downloads. As such, cliche popularity was classified as not popular.
We found that cliche demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket has acquired Secure Annex to expand extension security across browsers, IDEs, and AI tools.

Research
/Security News
Socket is tracking cloned Open VSX extensions tied to GlassWorm, with several updated from benign-looking sleepers into malware delivery vehicles.

Product
Reachability analysis for PHP is now available in experimental, helping teams identify which vulnerabilities are actually exploitable.