Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@keg-hub/cli-utils

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@keg-hub/cli-utils

Utility methods for writing Custom Tasks consumed by the Keg-CLI

  • 0.9.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1.2K
increased by61.73%
Maintainers
1
Weekly downloads
 
Created
Source

Keg-Hub Cli-Utils

  • Common utility methods for developing Node CLI's and writing custom tasks
  • This makes the process faster easier, and removes code duplication across projects

Install

With yarn

yarn add @keg-hub/cli-utils

With npm

npm install @keg-hub/cli-utils

CLI task setup

  • runTask - Find and execute a task
    • This method allows resolving a task based on the passed in tasks object and arguments
    • It's recommended to add a call it from a node script within your project
    • Then add a reference to that script in your package.json - scripts section
      • This allows calling it from a package manager such as yarn or npm like this =>
          // In your package.json file
          "scripts": {
            // ...other scripts
            "task": "node ./tasks/runTask.js",
          }
          
          // In tasks/runTask.js
          const { runTask } = require('@keg-hub/cli-utils')
          const taskDefinitions = require('./taskDefinitions')
        
          runTask(
            // Object containing all tasks definitions for the project
            taskDefinitions,
            // Default params passed to all tasks
            { env: process.env.NODE_ENV || 'local' }
          )
        
      • This above script can then be called like this => yarn task <task-name> <task-options>
        • Assuming a start task definition exists, running yarn task start will call the start task
    • This method will handle
      • Loading the global config defined at ~/.kegConfig/cli.config.json if it exists
      • Parsing options relative to a task-definitions options property
        • They are then passed to the task as the params key of the args object
  • setAppRoot - Register a taps root directory
    • When calling custom tasks outside of the keg-cli, calling this method is recommended
      • It ensures that in mono-repo or sym-linked situations, the project root can be properly resolved
      • That said, in most cases calling this method is NOT needed
        • But, since nothing is inversely affected by it, it's recommended to set it and forget it
        • Add it to the top of a tasks script file like this =>
            const { setAppRoot } = require('@keg-hub/cli-utils')
            setAppRoot(appRoot)
          
            module.exports = { customTask: { ...taskDefinition } }
          
        • See tap-vistapps-app tasks/index.js file for an example
  • registerTasks - Register Custom Tasks
    • In most situations calling registerTasks is NOT needed
      • It could be used when passing the tasks in the first argument of runTask is not possible
        • For example in a third-party package installed as a node module
      • It must be called prior to the call to the runTask method to ensure the tasks are loaded
        • It takes a single Object argument that should contain key/value pairs task name/definitions For example => registerTasks({ taskName: { ...taskDefinition } })

FAQs

Package last updated on 03 Aug 2023

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc