| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- # 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 -->
|