菜单

命令行界面

相关源文件

命令行界面 (CLI) 系统提供了 Bun 的各种工具和命令的主要用户界面。本文档涵盖了 CLI 架构、命令分发机制、参数解析系统以及单个命令的实现和执行方式。

有关特定运行时执行的信息,请参阅 核心 JavaScript 运行时。有关包管理器命令的详细信息,请参阅 包管理器

CLI 架构概览

CLI 系统围绕一个集中的命令分发架构构建,该架构负责参数解析、配置加载和命令执行。

来源: src/cli.zig50-64 src/cli.zig45-68

命令结构和分发

CLI 使用基于标签的分发系统,其中每个命令由一个 Command.Tag 枚举值表示,该值决定了参数的解析方式以及执行哪个实现。

来源: src/cli.zig107-132 src/cli.zig255-324

参数解析系统

Bun 的 CLI 使用 clap 库进行参数解析,该库具有分层参数系统,可将基本参数与特定于命令的参数相结合。

参数类别

类别目的关键参数
base_params_所有命令通用--help, --config, --cwd, --env-file
transpiler_params_代码转换--define, --loader, --jsx-runtime, --tsconfig-override
runtime_params_JavaScript 执行--watch, --hot, --preload, --inspect
build_params_打包和编译--outdir, --target, --minify, --sourcemap
test_params_测试执行--timeout, --coverage, --bail, --reporter

来源: src/cli.zig176-324 src/cli.zig452-470

命令执行流程

命令执行时,会经历一个标准化的流程,处理配置加载、参数验证和执行上下文设置。

来源: src/cli.zig452-470 src/cli.zig326-450

主要命令类别

运行时命令

这些命令使用 Bun 的运行时执行 JavaScript/TypeScript 代码

  • RunCommand - 执行 JavaScript 文件、npm 脚本和 shell 命令
  • TestCommand - 使用兼容 Jest 的 API 和报告器运行测试
  • BunxCommand - 执行包而无需全局安装

来源: src/cli/run_command.zig42-108 src/cli/test_command.zig28-36 src/cli/bunx_command.zig19-102

构建命令

这些命令处理代码转换和打包

  • BuildCommand - 为生产环境打包和优化 JavaScript/TypeScript
  • TranspilerCommand - 在不打包的情况下处理代码转换

包管理命令

这些命令管理依赖项和包

  • InstallCommand - 安装项目依赖项
  • AddCommand - 添加新依赖项
  • RemoveCommand - 删除依赖项
  • UpdateCommand - 更新现有依赖项

来源: src/cli.zig107-132

配置系统

CLI 通过 bunfig.toml 文件与 Bun 的配置系统集成,这些文件可以自动加载或显式指定。

来源: src/cli.zig326-450 src/cli.zig371-441

环境和上下文管理

每个命令执行都会创建一个 Command.Context,该上下文封装了执行环境,包括工作目录、配置、日志记录和特定于命令的选项。

上下文系统确保了所有命令之间的一致行为,同时允许通过 test_optionsbundler_optionsruntime_options 等选项进行特定于命令的自定义。

来源: src/cli.zig443-470 src/cli.zig613-665