You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
192 lines
4.3 KiB
192 lines
4.3 KiB
# confbox
|
|
|
|
<!-- automd:badges color=yellow bundlephobia packagephobia -->
|
|
|
|
[](https://npmjs.com/package/confbox)
|
|
[](https://npm.chart.dev/confbox)
|
|
[](https://bundlephobia.com/package/confbox)
|
|
|
|
<!-- /automd -->
|
|
|
|
Parsing and serialization utils for [YAML](https://yaml.org/) ([js-yaml](https://github.com/nodeca/js-yaml)), [TOML](https://toml.io/) ([smol-toml](https://github.com/squirrelchat/smol-toml)), [JSONC](https://github.com/microsoft/node-jsonc-parser) ([jsonc-parser](https://github.com/microsoft/node-jsonc-parser)), [JSON5](https://json5.org/) ([json5](https://github.com/json5/json5)), and [JSON](https://www.json.org/json-en.html).
|
|
|
|
✨ Zero dependency and tree-shakable
|
|
|
|
✨ Types exported out of the box
|
|
|
|
✨ Presrves code style (indentation and whitespace)
|
|
|
|
> [!TIP]
|
|
> Use [unjs/c12](https://github.com/unjs/c12) for a full featured configuration loader!
|
|
|
|
## Usage
|
|
|
|
Install package:
|
|
|
|
<!-- automd:pm-i no-version -->
|
|
|
|
```sh
|
|
# ✨ Auto-detect
|
|
npx nypm install confbox
|
|
|
|
# npm
|
|
npm install confbox
|
|
|
|
# yarn
|
|
yarn add confbox
|
|
|
|
# pnpm
|
|
pnpm install confbox
|
|
|
|
# bun
|
|
bun install confbox
|
|
|
|
# deno
|
|
deno install confbox
|
|
```
|
|
|
|
<!-- /automd -->
|
|
|
|
Import:
|
|
|
|
<!-- automd:jsimport cjs cdn src="./src/index.ts" -->
|
|
|
|
**ESM** (Node.js, Bun, Deno)
|
|
|
|
```js
|
|
import {
|
|
parseJSON5,
|
|
stringifyJSON5,
|
|
parseJSONC,
|
|
stringifyJSONC,
|
|
parseYAML,
|
|
stringifyYAML,
|
|
parseJSON,
|
|
stringifyJSON,
|
|
parseTOML,
|
|
stringifyTOML,
|
|
} from "confbox";
|
|
```
|
|
|
|
**CommonJS** (Legacy Node.js)
|
|
|
|
```js
|
|
const {
|
|
parseJSON5,
|
|
stringifyJSON5,
|
|
parseJSONC,
|
|
stringifyJSONC,
|
|
parseYAML,
|
|
stringifyYAML,
|
|
parseJSON,
|
|
stringifyJSON,
|
|
parseTOML,
|
|
stringifyTOML,
|
|
} = require("confbox");
|
|
```
|
|
|
|
**CDN** (Deno, Bun and Browsers)
|
|
|
|
```js
|
|
import {
|
|
parseJSON5,
|
|
stringifyJSON5,
|
|
parseJSONC,
|
|
stringifyJSONC,
|
|
parseYAML,
|
|
stringifyYAML,
|
|
parseJSON,
|
|
stringifyJSON,
|
|
parseTOML,
|
|
stringifyTOML,
|
|
} from "https://esm.sh/confbox";
|
|
```
|
|
|
|
<!-- /automd -->
|
|
|
|
<!-- automd:jsdocs src="./src/index" -->
|
|
|
|
### `parseJSON(text, options?)`
|
|
|
|
Converts a [JSON](https://www.json.org/json-en.html) string into an object.
|
|
|
|
Indentation status is auto-detected and preserved when stringifying back using `stringifyJSON`
|
|
|
|
### `parseJSON5(text, options?)`
|
|
|
|
Converts a [JSON5](https://json5.org/) string into an object.
|
|
|
|
### `parseJSONC(text, options?)`
|
|
|
|
Converts a [JSONC](https://github.com/microsoft/node-jsonc-parser) string into an object.
|
|
|
|
### `parseTOML(text)`
|
|
|
|
Converts a [TOML](https://toml.io/) string into an object.
|
|
|
|
### `parseYAML(text, options?)`
|
|
|
|
Converts a [YAML](https://yaml.org/) string into an object.
|
|
|
|
### `stringifyJSON(value, options?)`
|
|
|
|
Converts a JavaScript value to a [JSON](https://www.json.org/json-en.html) string.
|
|
|
|
Indentation status is auto detected and preserved when using value from parseJSON.
|
|
|
|
### `stringifyJSON5(value, options?)`
|
|
|
|
Converts a JavaScript value to a [JSON5](https://json5.org/) string.
|
|
|
|
### `stringifyJSONC(value, options?)`
|
|
|
|
Converts a JavaScript value to a [JSONC](https://github.com/microsoft/node-jsonc-parser) string.
|
|
|
|
### `stringifyTOML(value)`
|
|
|
|
Converts a JavaScript value to a [TOML](https://toml.io/) string.
|
|
|
|
### `stringifyYAML(value, options?)`
|
|
|
|
Converts a JavaScript value to a [YAML](https://yaml.org/) string.
|
|
|
|
<!-- /automd -->
|
|
|
|
<!-- automd:fetch url="gh:unjs/.github/main/snippets/readme-contrib-node-pnpm.md" -->
|
|
|
|
## Contribution
|
|
|
|
<details>
|
|
<summary>Local development</summary>
|
|
|
|
- Clone this repository
|
|
- Install the latest LTS version of [Node.js](https://nodejs.org/en/)
|
|
- Enable [Corepack](https://github.com/nodejs/corepack) using `corepack enable`
|
|
- Install dependencies using `pnpm install`
|
|
- Run tests using `pnpm dev` or `pnpm test`
|
|
|
|
</details>
|
|
|
|
<!-- /automd -->
|
|
|
|
## License
|
|
|
|
<!-- automd:contributors license=MIT author=pi0 -->
|
|
|
|
Published under the [MIT](https://github.com/unjs/confbox/blob/main/LICENSE) license.
|
|
Made by [@pi0](https://github.com/pi0) and [community](https://github.com/unjs/confbox/graphs/contributors) 💛
|
|
<br><br>
|
|
<a href="https://github.com/unjs/confbox/graphs/contributors">
|
|
<img src="https://contrib.rocks/image?repo=unjs/confbox" />
|
|
</a>
|
|
|
|
<!-- /automd -->
|
|
|
|
<!-- automd:with-automd -->
|
|
|
|
---
|
|
|
|
_🤖 auto updated with [automd](https://automd.unjs.io)_
|
|
|
|
<!-- /automd -->
|