Skip to content

Plugins

Plugins extend your CLI's capabilities. They can add commands, modify config, hook into lifecycle events, and more.

Using a Plugin

typescript
import { defineConfig } from 'create-bcli-app'
import autoComplete from 'create-bcli-app-plugin-autocomplete'
import updateNotifier from 'create-bcli-app-plugin-update'

export default defineConfig({
  name: 'my-cli',
  version: '1.0.0',
  plugins: [
    autoComplete(),
    updateNotifier(),
  ],
})

Writing a Plugin

typescript
import { definePlugin } from 'create-bcli-app'

export default definePlugin({
  name: 'my-plugin',
  setup: (config) => {
    // Modify config
    config.middlewares = config.middlewares ?? []
    config.middlewares.push({
      phase: 'preRun',
      run: (ctx) => {
        console.log('Plugin hook running!')
      },
    })

    // Return modified config
    return config
  },
})

Plugin API

typescript
interface PluginDefinition {
  name: string
  setup: (config: CraftConfig) => CraftConfig | void
}

Official Plugins

PluginDescription
create-bcli-app-plugin-autocompleteShell autocomplete (bash/zsh/fish)
create-bcli-app-plugin-updateCheck for updates on npm
create-bcli-app-plugin-telemetryAnonymous usage analytics

Publishing Plugins

Publish your plugin as an npm package with the create-bcli-app-plugin- prefix:

create-bcli-app-plugin-<name>

Users just install and add to their config.

Released under the MIT License.