rc9

Read/Write config couldn't be easier!

MIT 22 个版本
安装
npm install rc9
yarn add rc9
pnpm add rc9
bun add rc9
README

RC9

npm version npm downloads bundle size codecov

Read/Write RC configs couldn't be easier!

Install

Install dependencies:

# ✨ Auto-detect
npx nypm install rc9

# npm
npm install rc9

# yarn
yarn add rc9

# pnpm
pnpm add rc9

# bun
bun install rc9

# deno
deno install npm:rc9

Import utils:

ESM (Node.js, Bun, Deno)

import {
  defaults,
  parse,
  parseFile,
  read,
  readUser,
  serialize,
  write,
  writeUser,
  readUserConfig,
  writeUserConfig,
  updateUserConfig,
  update,
  updateUser,
} from "rc9";

Usage

.conf:

db.username=username
db.password=multi word password
db.enabled=true

Update config:

update({ "db.enabled": false }); // or update(..., { name: '.conf' })

Push to an array:

update({ "modules[]": "test" });

Read/Write config:

const config = read(); // or read('.conf')

// config = {
//   db: {
//     username: 'username',
//     password: 'multi word password',
//     enabled: true
//   }
// }

config.enabled = false;
write(config); // or write(config, '.conf')

User Config:

You can use readUserConfig/writeUserConfig/updateUserConfig to store config in the user's config directory ($XDG_CONFIG_HOME or ~/.config):

writeUserConfig({ token: 123 }, ".zoorc"); // Will be saved in ~/.config/.zoorc

const conf = readUserConfig(".zoorc"); // { token: 123 }

[!NOTE] readUser/writeUser/updateUser are deprecated. Use readUserConfig/writeUserConfig/updateUserConfig instead, which follow XDG conventions (~/.config).

Unflatten

RC uses flat to automatically flat/unflat when writing and reading rcfile.

It means that you can use . for keys to define objects. Some examples:

  • hello.world = true <=> { hello: { world: true }
  • test.0 = A <=> tags: [ 'A' ]

Note: If you use keys that can override like x= and x.y=, you can disable this feature by passing flat: true option.

Tip: You can use keys ending with [] to push to an array like test[]=A

Native Values

RC uses destr to convert values into native javascript values.

So reading count=123 results { count: 123 } (instead of { count: "123" }) if you want to preserve strings as is, can use count="123".

Exports

const defaults: RCOptions;
function parse(contents: string, options?: RCOptions): RC;
function parseFile(path: string, options?: RCOptions): RC;
function read(options?: RCOptions | string): RC;
function readUserConfig(options?: RCOptions | string): RC;
function serialize(config: RC): string;
function write(config: RC, options?: RCOptions | string): void;
function writeUserConfig(config: RC, options?: RCOptions | string): void;
function update(config: RC, options?: RCOptions | string): RC;
function updateUserConfig(config: RC, options?: RCOptions | string): RC;

Types:

type RC = Record<string, any>;
interface RCOptions {
  name?: string;
  dir?: string;
  flat?: boolean;
}

Defaults:

{
  name: '.conf',
  dir: process.cwd(),
  flat: false
}

Why RC9?

Be the first one to guess 🐇

License

Published under the MIT license. Made by community 💛

版本列表
3.0.1 2026-04-01
3.0.0 2026-02-06
2.1.2 2024-04-09
2.1.1 2023-06-20
2.1.0 2023-03-30
2.0.1 2023-01-24
2.0.0 2022-11-15
1.2.4 2022-11-16
1.2.3 2022-11-15
1.2.2 2022-04-07
1.2.1 2022-04-07
1.2.0 2020-11-25
1.1.0 2020-11-09
1.0.0 2020-06-16
0.0.7 2020-05-28
0.0.6 2020-05-28
0.0.5 2020-05-28
0.0.4 2020-05-28
0.0.3 2020-05-28
0.0.2 2020-05-27
0.0.1 2020-05-27
0.0.0 2020-05-27