CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-bunli

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

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

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';
}
Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/bunli@0.1.x
Publish Source
CLI
Badge
tessl/npm-bunli badge