webia1 / joycon

Find and load config files with joy.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

joycon

NPM version NPM downloads CircleCI donate chat

Differences with cosmiconfig?

JoyCon is much more lightweight while being feature-complete.

Install

yarn add joycon

Usage

const JoyCon = require('joycon')

const joycon = new JoyCon()

joycon.load(['package-lock.json', 'yarn.lock'])
.then(result => {
  // result is {} when files do not exist
  // otherwise { path, data }
})

By default only .js and .json file are parsed, otherwise raw data will be returned, so you can add custom loader to parse them:

const joycon = new JoyCon()

joycon.addLoader({
  test: /\.toml$/,
  load(filepath) {
    return require('toml').parse(filepath)
  }
})

joycon.load(['cargo.toml'])

API

constructor([options])

options

files

Type: string[]

The files to search.

cwd

The directory to search files.

resolve([files], [cwd], [stopDir])

files defaults to options.files.

cwd defaults to options.cwd.

stopDir defaults to path.parse(cwd).root.

Search files and resolve the path of the file we found.

There's also .resolveSync method.

load(...args)

The signature is the same as resolve.

Search files and resolve { path, data } of the file we found.

There's also .loadSync method.

addLoader(Loader)

interface Loader {
  test: RegExp
  load(filepath: string)?: Promise<any>
  loadSync(filepath: string)?: any
}

At least one of load and loadSync is required, depending on where you're calling the synchonous methods or not.

clearCache()

Each JoyCon instance uses its own cache.

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

joycon © egoist, Released under the MIT License.
Authored and maintained by egoist with help from contributors (list).

github.com/egoist · GitHub @egoist · Twitter @_egoistlily

About

Find and load config files with joy.

License:MIT License


Languages

Language:JavaScript 97.7%Language:TypeScript 2.3%