# @idlebox/json-extends-loader

> load JSON files with "extends" field

Latest version **1.0.37** (published 2026-08-08) · MIT license · 0 weekly downloads

## Install

```sh
npm install @idlebox/json-extends-loader
pnpm add @idlebox/json-extends-loader
yarn add @idlebox/json-extends-loader
bun add @idlebox/json-extends-loader
```

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; recently updated; high maintenance score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 1.0.37 |
| Published | 2026-08-08 |
| First published | 2022-07-12 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 3 |
| Unpacked size | 23 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 12 |
| Author | GongT |
| Maintainers | gongt |

## Links

- npm: https://www.npmjs.com/package/@idlebox/json-extends-loader
- Repository: https://github.com/GongT/baobao
- Homepage: https://github.com/GongT/baobao#readme
- Issues: https://github.com/GongT/baobao/issues
- npm.io page: https://npm.io/package/@idlebox/json-extends-loader

## Dependencies (3)

- [object-path](https://npm.io/package/object-path.md) ^0.11.8
- [comment-json](https://npm.io/package/comment-json.md) ^5.0.0
- [@idlebox/deepmerge](https://npm.io/package/@idlebox/deepmerge.md) ^0.0.15

## Recent versions

- 1.0.37 (latest) — 2026-08-08
- 1.0.36 — 2026-04-02
- 1.0.35 — 2026-04-01
- 1.0.34 — 2026-03-28
- 1.0.33 — 2026-03-20
- 1.0.32 — 2026-03-20
- 1.0.31 — 2026-03-19
- 1.0.30 — 2026-03-19
- 1.0.29 — 2026-02-03
- 1.0.28 — 2026-02-03
- 1.0.27 — 2026-01-17
- 1.0.26 — 2025-09-25
- 1.0.25 — 2025-08-30
- 1.0.24 — 2025-08-08
- 1.0.23 — 2025-08-05
- … 23 more at https://npm.io/package/@idlebox/json-extends-loader/versions

## README

# json extends loader

读取链式json配置文件。例如：

```json
{
	"extends": "...",
	// ...
}
```

## 用法：

```ts
import { loadInheritedJson } from '@idlebox/json-extends-loader';

const config = loadInheritedJson('src/tsconfig.json', { cwd: __dirname });
```

## 选项（第二个参数）

全部为可选项。

| 参数           | 类型                                                    | 默认值                                                                       | 说明                                                         |
| -------------- | ------------------------------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------ |
| readJsonFile   | `(absPath: string) => any` 即 `IJsonLoader`             | 使用[comment-json](https://www.npmjs.com/package/comment-json)读取并解析文件 | 读取指定文件，你可以通过此函数读取任何内容（如yaml）         |
| cwd            | `string`                                                | `process.cwd()`                                                              | 如果第一个参数是相对路径，则与cwd拼接，否则无影响            |
| extendsField   | `string`                                                | `"extends"`                                                                  | 将"extends"更换为其他字段名                                  |
| nodeResolution | `boolean`                                               | `true`                                                                       | 若为false，则不搜索node_modules，只能继承相对路径            |
| arrayMerge     | `<T>(target: T[], source: T[], options?: Options): T[]` | 后者简单覆盖前者                                                             | 参考[deepmerge](https://www.npmjs.com/package/deepmerge)文档 |

## 额外的工具方法

#### readJsonFile(filePath: string): any

使用[comment-json](https://www.npmjs.com/package/comment-json)读取并解析json文件。

这是readJsonFile选项的默认值。


#### createDynamicReader(processor: IProcess): IJsonLoader

```ts
interface IProcess {
	(file: string, data: any): void;
}
```

返回一个函数，可用于`readJsonFile`选项。你可以在此回调中修改`data`。

### const tsconfigReader: IJsonLoader

预定义的loader，可作为`readJsonFile`选项使用。

为加载`tsconfig.json`优化

- 解析许多与路径相关的选项。例如 outDir、rootDir

### class NotFoundError

错误对象

---
_Source: https://npm.io/package/@idlebox/json-extends-loader · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
