Skip to content

sidekick-coder/lab

Repository files navigation

@sidekick-coder/lab

A developer-friendly CLI for managing and running commands globally

  • No need for node_modules but still keeps type safety
  • Modular commands with lab.mjs files
  • Default modules for common tasks

Installation

You can install globally using npm:

npm install -g @sidekick-coder/lab

Or use it directly with npx (no install required):

npx @sidekick-coder/lab [command]

Usage

After installing globally, run the CLI with:

lab [command]

Or, if using npx:

npx @sidekick-coder/lab [command]

Setting up an Alias

To make it easier to use, you can set up a shell alias. Add the following to your shell profile (e.g., .bashrc, .zshrc, or PowerShell $PROFILE):

Bash/Zsh

# npx
alias lab="npx @sidekick-coder/lab"

# global install 
alias lab="node $(npm root -g)/@sidekick-coder/lab/index.js"

PowerShell

# npx
function lab {
    npx '@sidekick-coder/lab' @args
}

# gloabl install 
function lab {
    $root = npm root -g
    $path = Join-Path -Path $root -ChildPath "@sidekick-coder/lab/index.js"

    node $path @args
}

Now you can use lab as a shortcut for the CLI.

Labs

Labs are modular JavaScript files that extend the CLI with custom subcommands. You can initialize a new lab in your project with:

lab init [name]

This generates a tsconfig.json, a lab.mjs entry point, and a sample command.

A typical lab.mjs registers your lab and its subcommands:

import { createCommander } from '@lab/core/commander/index.js'
import { defineLab } from '@lab/utils/index.js'
import { resolve } from 'path'

export default defineLab({
    name: 'my-lab',
    setup(lab) {
        const commander = createCommander({
            bin: `${lab.commander.bin} my-lab`,
        })
        commander.addFolder(resolve(import.meta.dirname, './commands'))
        lab.commander.addSubCommander('my-lab', commander)
    },
})

You can register labs globally by adding their paths to your home config file (e.g., ~/.lab/config.yml):

labs:
  - /absolute/path/to/my-lab.mjs
  - /absolute/path/to/another-lab.mjs

For more details, see the full Lab Registration Guide.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors