Read/Write config couldn't be easier!
npm install rc9



Read/Write RC configs couldn't be easier!
Install dependencies:
``sh✨ Auto-detect
npx nypm install rc9
Import utils:
ESM (Node.js, Bun, Deno)
`js
import {
defaults,
parse,
parseFile,
read,
readUser,
serialize,
write,
writeUser,
readUserConfig,
writeUserConfig,
updateUserConfig,
update,
updateUser,
} from "rc9";
`Usage
.conf:`ini
db.username=username
db.password=multi word password
db.enabled=true
`Update config:
`ts
update({ "db.enabled": false }); // or update(..., { name: '.conf' })
`Push to an array:
`ts
update({ "modules[]": "test" });
`Read/Write config:
`ts
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):`js
writeUserConfig({ token: 123 }, ".zoorc"); // Will be saved in ~/.config/.zoorcconst 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[]=ANative 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
`ts
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:
`ts
type RC = Record;
interface RCOptions {
name?: string;
dir?: string;
flat?: boolean;
}
`Defaults:
`ini
{
name: '.conf',
dir: process.cwd(),
flat: false
}
``Be the first one to guess 🐇
Published under the MIT license.
Made by community 💛