
# 目录

> 自定义 Nitro 查找源文件和写入构建输出的位置。

::note
本页所有示例都假设已在 `nitro.config.ts` 中导入以下内容：

```ts
import { defineConfig } from "nitro";
```
::

### `workspaceDir`

项目工作区根目录。

未设置 `workspaceDir` 选项时，会自动检测工作区目录（例如 pnpm 工作区）。

```ts
export default defineConfig({
  workspaceDir: "../", // monorepo root
});
```

### `rootDir`

项目主目录。

```ts
export default defineConfig({
  rootDir: "./src/server",
});
```

### `serverDir`

- 类型：`boolean`{lang=ts} | `"./"`{lang=ts} | `"./server"`{lang=ts} | `string`{lang=ts}
- 默认值：`false`{lang=ts}

用于扫描 `api/`、`routes/`、`plugins/`、`utils/`、`middleware/`、`modules/` 和 `tasks/` 目录的服务器目录。

设为 `false` 时会禁用自动目录扫描。设为 `"./"` 可使用根目录，设为 `"./server"` 则使用 `server/` 子目录。

```ts
export default defineConfig({
  serverDir: "./server", // scan server/ subdirectory
});
```

### `scanDirs`

- 默认值：`[]`{lang=ts}（为空时会扫描服务器源目录）

要扫描并自动注册文件（例如 API 路由）的目录列表。

```ts
export default defineConfig({
  scanDirs: ["./modules/auth/api", "./modules/billing/api"],
});
```

### `apiDir`

- 默认值：`"api"`{lang=ts}

指定用于扫描 API 路由处理器的其他目录。

```ts
export default defineConfig({
  apiDir: "endpoints", // scan endpoints/ instead of api/
});
```

### `routesDir`

- 默认值：`"routes"`{lang=ts}

指定用于扫描路由处理器的其他目录。

```ts
export default defineConfig({
  routesDir: "pages", // scan pages/ instead of routes/
});
```

### `buildDir`

- 默认值：`"node_modules/.nitro"`{lang=ts}

Nitro 生成构建相关文件时使用的临时工作目录。

```ts
export default defineConfig({
  buildDir: ".nitro", // use .nitro/ in project root
});
```

### `output`

- 默认值：`{ dir: '.output', serverDir: '.output/server', publicDir: '.output/public' }`{lang=ts}

生产构建产物的输出目录。

```ts
export default defineConfig({
  output: {
    dir: "dist",
    serverDir: "dist/server",
    publicDir: "dist/public",
  },
});
```

### `ignore`

- 默认值：`[]`{lang=ts}

扫描目录时要忽略的 glob 模式数组。

```ts
export default defineConfig({
  ignore: [
    "routes/_legacy/**", // skip legacy route handlers
  ],
});
```

测试文件（`*.test.ts`、`*.spec.ts`）和类型声明（`*.d.ts`）始终会被忽略。

### `scanSuffixes`

- 默认值：`[]`{lang=ts}

要保留在已扫描文件名中的额外点分后缀。Nitro 会将已扫描文件名末尾的小写后缀（例如 `.get` 或 `.dev`）作为保留后缀。已知文件扩展名（例如 `.json`、`.md`、`.xml`）始终会保留。参见[保留后缀](/docs/routing#reserved-suffixes)。

```ts
export default defineConfig({
  scanSuffixes: ["prompt"], // routes/system.prompt.ts -> /system.prompt
});
```
