or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cli-commands.mdconfiguration.mdindex.mdproject-utilities.md
tile.json

tessl/npm-bunli

CLI development framework specifically designed for Bun runtime with complete toolchain for building, testing, and distributing command-line applications.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/bunli@0.1.x

To install, run

npx @tessl/cli install tessl/npm-bunli@0.1.0

index.mddocs/

Bunli

Bunli is a comprehensive CLI development framework specifically designed for Bun runtime. It provides a complete toolchain for building, testing, and distributing command-line applications with type-safe command definitions, development tools with hot reloading, and compilation to standalone binaries for multiple platforms.

Package Information

  • Package Name: bunli
  • Package Type: npm
  • Language: TypeScript
  • Installation: bun add bunli or npm install bunli
  • Bun Requirement: >=1.0.0

Core Imports

import { defineConfig, loadConfig, findEntry, type BunliConfig } from 'bunli';

For CommonJS:

const { defineConfig, loadConfig, findEntry } = require('bunli');

Basic Usage

// bunli.config.ts
import { defineConfig } from 'bunli';

export default defineConfig({
  name: 'my-cli',
  version: '1.0.0',
  build: {
    entry: 'src/cli.ts',
    targets: ['native']
  },
  dev: {
    watch: true
  }
});

// Using programmatic API
import { loadConfig, findEntry } from 'bunli';

const config = await loadConfig();
const entryPoint = await findEntry();

Architecture

Bunli is built around several key components:

  • CLI Framework: Built on @bunli/core for type-safe command definitions and execution
  • Development Tools: Hot reload, debugging, and test execution capabilities
  • Build System: Compilation to standalone executables for multiple platforms using Bun's native compiler
  • Configuration System: Type-safe configuration with auto-detection and validation
  • Workspace Support: Multi-package monorepo support with independent or fixed versioning strategies
  • Programmatic API: Functions for configuration management and project introspection

Capabilities

Configuration Management

Type-safe configuration system for defining project settings, build options, and development preferences.

/**
 * Type-safe helper for defining bunli configuration files
 * @param config - Configuration object following BunliConfig schema
 * @returns The same configuration object with type validation
 */
function defineConfig(config: BunliConfig): BunliConfig;

/**
 * Loads bunli configuration from config files
 * @param cwd - Current working directory to search for config files (defaults to process.cwd())
 * @returns Promise resolving to the loaded configuration
 */
function loadConfig(cwd?: string): Promise<BunliConfig>;

interface BunliConfig {
  name?: string;
  version?: string;
  description?: string;
  commands?: {
    manifest?: string;
    directory?: string;
  };
  build?: BuildConfig;
  dev?: DevConfig;
  test?: TestConfig;
  release?: ReleaseConfig;
  workspace?: WorkspaceConfig;
}

Configuration

Project Utilities

Utilities for project introspection and file discovery.

/**
 * Auto-detects entry point files for CLI projects
 * @param cwd - Current working directory to search (defaults to process.cwd())
 * @returns Promise resolving to detected entry file path or undefined if none found
 */
function findEntry(cwd?: string): Promise<string | undefined>;

Project Utilities

CLI Commands

Complete command-line interface for development, building, testing, and releasing CLI applications.

# Development
bunli dev [options]              # Run CLI in development mode with hot reload
bunli build [options]            # Build CLI for production
bunli test [options]             # Run tests for CLI

# Project Management
bunli init [options] [name]      # Initialize new Bunli CLI project
bunli release [options]          # Create a release of CLI

# Global Options
bunli --help                     # Show help information
bunli --version                  # Show version information

CLI Commands

Types

interface BuildConfig {
  entry?: string | string[];
  outdir?: string;
  targets?: string[];
  compress?: boolean;
  external?: string[];
  minify?: boolean;
  sourcemap?: boolean;
}

interface DevConfig {
  watch?: boolean;
  inspect?: boolean;
  port?: number;
}

interface TestConfig {
  pattern?: string | string[];
  coverage?: boolean;
  watch?: boolean;
}

interface ReleaseConfig {
  npm?: boolean;
  github?: boolean;
  tagFormat?: string;
  conventionalCommits?: boolean;
}

interface WorkspaceConfig {
  packages?: string[];
  shared?: any;
  versionStrategy?: 'fixed' | 'independent';
}