cosmiconfig
Advanced tools
Changelog
5.0.2
searchSync
and loadSync
to load JS configuration files whose export is a Promise.Changelog
5.0.1
The API has been completely revamped to increase clarity and enable a very wide range of new usage. Please read the readme for all the details.
While the defaults remain just as useful as before — and you can still pass no options at all — now you can also do all kinds of wild and crazy things.
loaders
option allows you specify custom functions to derive config objects from files. Your loader functions could parse ES2015 modules or TypeScript, JSON5, even INI or XML. Whatever suits you.searchPlaces
option allows you to specify exactly where cosmiconfig looks within each directory it searches.loaders
and searchPlaces
means that you should be able to load pretty much any kind of configuration file you want, from wherever you want it to look.Additionally, the overloaded load()
function has been split up into several clear and focused functions:
search()
now searches up the directory tree, and load()
loads a configuration file that you don't need to search for.sync
option has been replaced with separate synchronous functions: searchSync()
and loadSync()
.clearFileCache()
and clearDirectoryCache()
have been renamed to clearLoadCache()
and clearSearchPath()
respectively.More details:
require
, instead of require-from-string
. So you could use require
hooks to control the loading of JS files (e.g. pass them through esm or Babel). In most cases it is probably preferable to use a custom loader.rc
, js
, and rcExtensions
have all been removed. You can accomplish the same and more with searchPlaces
.searchPlaces
include rc
files with extensions, e.g. .thingrc.json
, .thingrc.yaml
, .thingrc.yml
. This is the equivalent of switching the default value of the old rcExtensions
option to true
.rcStrictJson
has been removed. To get the same effect, you can specify noExt: cosmiconfig.loadJson
in your loaders
object.packageProp
no longer accepts false
. If you don't want to look in package.json
, write a searchPlaces
array that does not include it.search()
. The new option ignoreEmptySearchPlaces
allows you to load them, instead, in case you want to do something with empty files.configPath
has been removed. Just pass your filepaths directory to load()
.format
option. Formats are now all handled via the file extensions specified in loaders
.(If you're wondering with happened to 5.0.0 ... it was a silly publishing mistake.)
Changelog
4.0.0
parse-json
from 3.0.0
to 4.0.0
(see [sindresorhus/parse-json#12][parse-json-pr-12]).JSON
parse errors(see [#101][pr-101]). If you were relying on the format of JSON-parsing error messages, this will be a breaking change for you.searchPath
as process.cwd()
in explorer.load
.Changelog
3.0.1
require-from-string
.Changelog
3.0.0
--config
flag. cosmiconfig will not parse command line arguments. Your application can parse command line arguments and pass them to cosmiconfig.argv
config option.sync
option.options.configPath
is package.json
, return the package prop, not the entire JSON file.Changelog
2.2.2
options.configPath
and --config
flag are respected.Changelog
2.2.0, 2.2.1
Changelog
2.2.0, 2.2.1
Changelog
2.1.3
json-parse-helpfulerror
to parse-json
.