Skip to content
A javascript clone of google/python-fire πŸ”₯
Branch: master
Clone or download
hobochild Minor Fixes
Improve the spacing on subcommands

add some docs about object descriptions

update snaps
Latest commit fff1130 Oct 5, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Adds js-fire cli and allows you to require any module which is then Sep 18, 2019
__snapshots__ Minor Fixes Oct 5, 2019
bin Add some docs Sep 25, 2019
examples Handle subcommand edge cases Sep 22, 2019
lib Minor Fixes Oct 5, 2019
.gitignore 0.1.0 Sep 12, 2018 Add some docs Sep 25, 2019
LICENSE add license Sep 22, 2019 Minor Fixes Oct 5, 2019
index.js Add some docs Sep 25, 2019
index.test.js Adding flag suggestions Sep 22, 2019
package.json v0.7.1 Oct 5, 2019
yarn.lock Add some docs Sep 25, 2019

js-fire CircleCI

A javascript implementation of google/python-fire

js-fire is a library for automatically generating command line interfaces (CLIs) from most js objects.

  • js Fire is a simple way to create a CLI in js.
  • js Fire helps with exploring existing code or turning other people's code into a CLI.
  • js Fire makes transitioning between Bash and js easier.


yarn add js-fire
npm install js-fire

js-fire is exposed as both an API and a CLI.

API Usage

You can call Fire on any functions and objects:

Here's an example of calling Fire on a object, you can infinitely nest objects to create subcommands.

const fire = require('js-fire')

const calculator = {
  __description__: 'I am a math machine',
  double: number => {
    // I double things
    return 2 * number
  add: (n1 = Math.PI, n2) => {
    return n1 + n2
  misc: {
    year: () => '1999',
    brand: () => 'casio',
    hello: name => `hello ${name}`,


Then, from the command line, you can run:

node calculator.js double --number=15  # 30
node calculator.js misc hello hobochild  # 'hello hobochild'

Automactic --help command.

node calculator.js --help

	node calculator.js

	I am a math machine


	half  --number=<number>
	double  --number=<number>
	add  --n1=3.141592653589793  --n2=<n2>

		hello  --name=<name>

Automatic --interactive mode:


For additional examples, see /examples.

CLI Usage

js-fire exposes a CLI that takes modulePath and passes it to js-fire.

	js-fire  --modulePath=<modulePath>


So you can js-fire on most js modules.

js-fire fs -- writeFileSync --path=hello.txt --data="hiii"

You can also use interactive and help mode to explore a modules api:

js-fire fs -- -h



	appendFile <flags> --path=<path>  --data=<data>  --options=<options>  --callback=<callback>
	appendFileSync <flags> --path=<path>  --data=<data>  --options=<options>
	access <flags> --path=<path>  --mode=<mode>  --callback=<callback>
	accessSync <flags> --path=<path>  --mode=<mode>
	chown <flags> --path=<path>  --uid=<uid>  --gid=<gid>  --callback=<callback>
	chownSync <flags> --path=<path>  --uid=<uid>  --gid=<gid>
	chmod <flags> --path=<path>  --mode=<mode>  --callback=<callback>
	chmodSync <flags> --path=<path>  --mode=<mode>
	close <flags> --fd=<fd>  --callback=<callback>
	closeSync <flags> --fd=<fd>
	copyFile <flags> --src=<src>  --dest=<dest>  --flags=<flags>  --callback=<callback>
	copyFileSync <flags> --src=<src>  --dest=<dest>  --flags=<flags>
	createReadStream <flags> --path=<path>  --options=<options>
	createWriteStream <flags> --path=<path>  --options=<options>
	exists <flags> --path=<path>  --callback=<callback>
	existsSync <flags> --path=<path>
You can’t perform that action at this time.