A rapid development environment using docker for convenience

Takeoff Custom Commands

Adding custom commands to Takeoff is easy via the commands API. Inside the workspace folder is a commands folders and in here you can drop in a TypeScript or JavaScript file that exports a TakeoffCommand

Example Takeoff Command

Below is an example of a “Hello World” command. The available injected features are documented in the comments.

module.exports = ({
  args,             // The arguments passed to the command line
  command,          // The command being executed
  opts,             // A key/value of options
  pathExists,       // A function to check if a path exists, returns true or false
  printMessage,     // A Function to Print a message to the screen
  rcFile,           // An object of the rcRoot location, if it exists and the parsed properties
  runCommand,       // A function to run a command in the shell
  shell,            // A instance of shelljs for low level operations
  silent,           // If the takeoff command is being run as silent or verbose
  workingDir,       // The directory the command is being run in
}) => ({
     * The below command is available via
     * > takeoff myapp:my-command -w
  command: 'my-command',
  description: 'A custom greeting command',
  args: '[word]',
  options: [{
    option: '-w, --world',
    description: 'Add world to the output'
  group: 'myapp',
  handler() {
    printMessage(`My script does something`);

    let cmd = 'echo Hello';

    const [word] = args.length > 0 ? args: [''];

    if (word !== '') {
      cmd = `${cmd} ${word}`;

    if (opts['w'] || opts['world']) {
      cmd = `${cmd} world`;

    // Pass rcFile.rcRoot instead of working dir
    // to run from the workspace folder
    const runCmd = runCommand(cmd, workingDir);

    return {
      cmd: runCmd,
      code: runCmd.code,
      fail: 'Error running command',
      success: 'Successfully ran command',

This can now be run as takeoff myapp:my-command dev -w and will print Hello dev world