> For AI agents: the complete documentation index is available at /zh/llms.txt, the full documentation bundle is available at /zh/llms-full.txt.

# 命令行工具

Rslib 内置了一个轻量级的命令行工具，包含 [rslib](#rslib)、[rslib inspect](#rslib-inspect) 等命令。

## 查看所有命令

如果你需要查看所有可用的 CLI 命令，请在项目目录中运行以下命令：

```bash
npx rslib -h
```

输出如下：

```bash
Usage:
  $ rslib [command] [options]

Commands:
  build    构建用于生产环境的产物（未指定命令时默认执行）
  inspect  检查 Rslib 项目的 Rsbuild 配置和 Rspack 配置
  mf-dev   为 Module Federation 格式的库启动 Rsbuild 开发服务器
```

## 公共选项

Rslib CLI 提供了一些公共选项，可以用于所有命令：

| 选项                         | 描述                                                                                                          |
| -------------------------- | ----------------------------------------------------------------------------------------------------------- |
| `-c, --config <config>`    | 指定配置文件路径，可以为相对路径或绝对路径，详见 [指定配置文件](/zh/guide/basic/configure-rslib.md#指定配置文件)                                |
| `--config-loader <loader>` | 指定配置文件加载方式（`auto` \| `jiti` \| `native`），详见 [指定加载方式](/zh/guide/basic/configure-rslib.md#指定加载方式)             |
| `--env-dir <dir>`          | 指定目录来加载 `.env` 文件，详见 [Rsbuild - Env 目录](https://rsbuild.rs/zh/guide/advanced/env-vars#env-directory)        |
| `--env-mode <mode>`        | 指定 env 模式来加载 `.env.[mode]` 文件，详见 [Rsbuild - Env 模式](https://rsbuild.rs/zh/guide/advanced/env-vars#env-mode) |
| `-h, --help`               | 显示命令帮助                                                                                                      |
| `--lib <id>`               | 指定运行命令的库（可重复，例如：`--lib esm --lib cjs`），查看 [lib.id](/zh/config/lib/id.md) 了解如何获取或设置库的 ID                     |
| `--log-level <level>`      | 指定日志级别（`info` \| `warn` \| `error` \| `silent`），详见 [logLevel](/zh/config/rsbuild/log-level.md)              |
| `--no-env`                 | 禁用 `.env` 文件的加载                                                                                             |
| `-r, --root <root>`        | 指定项目根目录，可以是绝对路径或者相对于 cwd 的路径                                                                                |

## rslib

`rslib` 命令默认会在 `dist/` 目录下输出构建产物。`rslib build` 是 `rslib` 命令的别名。

```bash
Usage:
  $ rslib

Options:
  -w, --watch            开启 watch 模式，监听文件变更并重新构建
  --entry <entry>        设置入口文件或匹配模式（可重复传递）
  --dist-path <dir>      设置输出目录
  --bundle               启用 bundle 模式（使用 --no-bundle 禁用）
  --format <format>      指定输出格式（esm | cjs | umd | mf | iife）
  --syntax <syntax>      指定构建语法目标（可重复传递）
  --target <target>      指定运行时目标（web | node）
  --dts                  生成声明文件（使用 --no-dts 禁用）
  --externals <pkg>      将依赖加入 externals（可重复传递）
  --minify               压缩输出（使用 --no-minify 禁用）
  --clean                构建前清理输出目录（使用 --no-clean 禁用）
  --auto-extension       控制自动补全扩展名重定向（使用 --no-auto-extension 禁用）
  --auto-external        控制自动外部化依赖（使用 --no-auto-external 禁用）
  --tsconfig <path>      使用指定的 tsconfig（相对于项目根目录）
```

:::note
如果项目中不存在 Rslib [配置文件](/zh/guide/basic/configure-rslib.md#配置文件)，CLI 将自动使用仅包含单个 [lib](/zh/config/lib/index.md) 的默认配置，并根据命令行参数完成构建。当需要更复杂的配置或构建多种格式的产物时，再补充配置文件即可。
:::

### Watch 模式

使用 `rslib --watch` 或 `rslib -w` 可以开启 watch 模式。Rslib 会监听源文件变化，并在文件发生变化时自动重新构建。

如果需要根据是否开启 watch 模式来调整配置，可以检查 `process.argv`：

```ts title="rslib.config.ts"
import { defineConfig } from '@rslib/core';

const isWatch = process.argv.some((arg) => arg === '--watch' || arg === '-w');

export default defineConfig({
  source: {
    alias: {
      '@request': isWatch ? './src/request.dev.js' : './src/request.prod.js',
    },
  },
});
```

## rslib inspect

`rslib inspect` 命令用于查看项目的 Rslib 配置及对应的 Rsbuild 和 Rspack 配置。

```bash
Usage:
  $ rslib inspect

Options:
  --mode <mode>         指定构建模式（development | production）
  --output <output>     指定在 dist 目录下输出的路径（默认：".rsbuild"）
  --verbose             在结果中展示函数的完整内容
```

当你在项目根目录下执行命令 `npx rslib inspect` 后，会在项目的 `dist/.rsbuild` 目录生成以下文件：

- `rsbuild.config.mjs`: 表示在构建时使用的 Rsbuild 配置。
- `rspack.config.esm.mjs`: 表示在构建时使用的 Rspack 配置。
- `rslib.config.mjs`: 表示解析后的 Rslib 配置。

```text
➜ npx rslib inspect

config inspection completed, generated files:

  - Rsbuild config: /project/dist/.rsbuild/rsbuild.config.mjs
  - Rspack Config (esm): /project/dist/.rsbuild/rspack.config.esm.mjs
  - Rslib Config: /project/dist/.rsbuild/rslib.config.mjs
```

### 指定模式

默认情况下，`mode` 会根据 `process.env.NODE_ENV` 推断：当 `NODE_ENV` 为 `'development'` 时，`mode` 为 `'development'`，否则为 `'production'`。

当 `mode` 为 `'production'` 时，inspect 命令会输出所有库的生产模式配置。你也可以添加 `--mode development` 选项来输出 [format](/zh/config/lib/format.md) 为 `mf` 的库的开发模式配置：

```bash
rslib inspect --mode development
```

### 完整内容

默认情况下，inspect 命令会省略配置对象中的函数内容，你可以添加 `--verbose` 选项来输出函数的完整内容：

```bash
rslib inspect --verbose
```

### 多种输出格式

如果当前项目同时有多种输出格式，比如 ESM 产物和 CJS 产物，那么会在 `dist/.rsbuild` 目录生成多份 Rspack 配置文件。

```text
➜ npx rslib inspect

config inspection completed, generated files:

  - Rsbuild config (esm): /project/dist/.rsbuild/rsbuild.config.esm.mjs
  - Rsbuild config (cjs): /project/dist/.rsbuild/rsbuild.config.cjs.mjs
  - Rspack Config (esm): /project/dist/.rsbuild/rspack.config.esm.mjs
  - Rspack Config (cjs): /project/dist/.rsbuild/rspack.config.cjs.mjs
  - Rslib Config: /project/dist/.rsbuild/rslib.config.mjs
```

## rslib mf-dev

`rslib mf-dev` 命令用于为 [Module Federation](/zh/guide/advanced/module-federation.md) 格式的库启动 Rsbuild 开发服务器。

这允许你在 host 应用中访问和调试 mf 格式的模块。
