Differences with cosmiconfig?
JoyCon is much more lightweight while being feature-complete.
yarn add joycon
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'])
Type: string[]
The files to search.
The directory to search files.
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.
The signature is the same as resolve.
Search files and resolve { path, data }
of the file we found.
There's also .loadSync
method.
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.
Each JoyCon instance uses its own cache.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
joycon © egoist, Released under the MIT License.
Authored and maintained by egoist with help from contributors (list).
github.com/egoist · GitHub @egoist · Twitter @_egoistlily