UNPKG

8.34 kBMarkdownView Raw
1# Changelog
2
3## 7.0.0
4
5- **Breaking change:** Add `${moduleName}rc.cjs` and `${moduleName}.config.cjs` to the default `searchPlaces`, to support users of `"type": "module"` in recent versions of Node.
6- **Breaking change:** Drop support for Node 8. Now requires Node 10+.
7
8## 6.0.0
9
10- **Breaking change:** The package now has named exports. See examples below.
11- **Breaking change:** Separate async and sync APIs, accessible from different named exports. If you used `explorer.searchSync()` or `explorer.loadSync()`, you'll now create a sync explorer with `cosmiconfigSync()`, then use `explorerSync.search()` and `explorerSync.load()`.
12
13 ```js
14 // OLD: cosmiconfig v5
15 import cosmiconfig from 'cosmiconfig';
16
17 const explorer = cosmiconfig('example');
18 const searchAsyncResult = await explorer.search();
19 const loadAsyncResult = await explorer.load('./file/to/load');
20 const searchSyncResult = explorer.searchSync();
21 const loadSyncResult = explorer.loadSync('./file/to/load');
22
23 // NEW: cosmiconfig v6
24 import { cosmiconfig, cosmiconfigSync } from 'cosmiconfig';
25
26 const explorer = cosmiconfig('example');
27 const searchAsyncResult = await explorer.search();
28 const loadAsyncResult = await explorer.load('./file/to/load');
29
30 const explorerSync = cosmiconfigSync('example');
31 const searchSyncResult = explorerSync.search();
32 const loadSyncResult = explorerSync.load('./file/to/load');
33 ```
34- **Breaking change:** Remove support for Node 4 and 6. Requires Node 8+.
35- **Breaking change:** Use npm package [yaml](https://www.npmjs.com/package/yaml) to parse YAML instead of npm package [js-yaml](https://www.npmjs.com/package/js-yaml).
36- **Breaking change:** Remove `cosmiconfig.loaders` and add named export `defaultLoaders` that exports the default loaders used for each extension.
37
38 ```js
39 import { defaultLoaders } from 'cosmiconfig';
40
41 console.log(Object.entries(defaultLoaders))
42 // [
43 // [ '.js', [Function: loadJs] ],
44 // [ '.json', [Function: loadJson] ],
45 // [ '.yaml', [Function: loadYaml] ],
46 // [ '.yml', [Function: loadYaml] ],
47 // [ 'noExt', [Function: loadYaml] ]
48 // ]
49 ```
50- Migrate from Flowtype to Typescript.
51- Lazy load all default loaders.
52
53## 5.2.1
54
55- Chore: Upgrade `js-yaml` to avoid npm audit warning.
56
57## 5.2.0
58
59- Added: `packageProp` values can be arrays of strings, to allow for property names that include periods. (This was possible before, but not documented or deliberately supported.)
60- Chore: Replaced the `lodash.get` dependency with a locally defined function.
61- Chore: Upgrade `js-yaml` to avoid npm audit warning.
62
63## 5.1.0
64
65- Added: `packageProp` values can include periods to describe paths to nested objects within `package.json`.
66
67## 5.0.7
68
69- Fixed: JS loader bypasses Node's `require` cache, fixing a bug where updates to `.js` config files would not load even when Cosmiconfig was told not to cache.
70
71## 5.0.6
72
73- Fixed: Better error message if the end user tries an extension Cosmiconfig is not configured to understand.
74
75## 5.0.5
76
77- Fixed: `load` and `loadSync` work with paths relative to `process.cwd()`.
78
79## 5.0.4
80
81- Fixed: `rc` files with `.js` extensions included in default `searchPlaces`.
82
83## 5.0.3
84
85- Docs: Minor corrections to documentation. *Released to update package documentation on npm*.
86
87## 5.0.2
88
89- Fixed: Allow `searchSync` and `loadSync` to load JS configuration files whose export is a Promise.
90
91## 5.0.1
92
93The 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.**
94
95While 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.
96
97- The `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.
98- The `searchPlaces` option allows you to specify exactly where cosmiconfig looks within each directory it searches.
99- The combination of `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.
100
101Additionally, the overloaded `load()` function has been split up into several clear and focused functions:
102
103- `search()` now searches up the directory tree, and `load()` loads a configuration file that you don't need to search for.
104- The `sync` option has been replaced with separate synchronous functions: `searchSync()` and `loadSync()`.
105- `clearFileCache()` and `clearDirectoryCache()` have been renamed to `clearLoadCache()` and `clearSearchPath()` respectively.
106
107More details:
108
109- The default JS loader uses `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.
110- The options `rc`, `js`, and `rcExtensions` have all been removed. You can accomplish the same and more with `searchPlaces`.
111- The default `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`.
112- The option `rcStrictJson` has been removed. To get the same effect, you can specify `noExt: cosmiconfig.loadJson` in your `loaders` object.
113- `packageProp` no longer accepts `false`. If you don't want to look in `package.json`, write a `searchPlaces` array that does not include it.
114- By default, empty files are ignored by `search()`. The new option `ignoreEmptySearchPlaces` allows you to load them, instead, in case you want to do something with empty files.
115- The option `configPath` has been removed. Just pass your filepaths directory to `load()`.
116- Removed the `format` option. Formats are now all handled via the file extensions specified in `loaders`.
117
118(If you're wondering with happened to 5.0.0 ... it was a silly publishing mistake.)
119
120## 4.0.0
121
122- Licensing improvement: updated `parse-json` from `3.0.0` to `4.0.0`(see [sindresorhus/parse-json#12][parse-json-pr-12]).
123- Changed: error message format for `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.
124- Changed: set default for `searchPath` as `process.cwd()` in `explorer.load`.
125
126## 3.1.0
127
128- Added: infer format based on filePath
129
130## 3.0.1
131
132- Fixed: memory leak due to bug in `require-from-string`.
133- Added: for JSON files, append position to end of error message.
134
135## 3.0.0
136
137- Removed: support for loading config path using the `--config` flag. cosmiconfig will not parse command line arguments. Your application can parse command line arguments and pass them to cosmiconfig.
138- Removed: `argv` config option.
139- Removed: support for Node versions < 4.
140- Added: `sync` option.
141- Fixed: Throw a clear error on getting empty config file.
142- Fixed: when a `options.configPath` is `package.json`, return the package prop, not the entire JSON file.
143
144## 2.2.2
145
146- Fixed: `options.configPath` and `--config` flag are respected.
147
148## 2.2.0, 2.2.1
149
150- 2.2.0 included a number of improvements but somehow broke stylelint. The changes were reverted in 2.2.1, to be restored later.
151
152## 2.1.3
153
154- Licensing improvement: switched from `json-parse-helpfulerror` to `parse-json`.
155
156## 2.1.2
157
158- Fixed: bug where an `ENOENT` error would be thrown is `searchPath` referenced a non-existent file.
159- Fixed: JSON parsing errors in Node v7.
160
161## 2.1.1
162
163- Fixed: swapped `graceful-fs` for regular `fs`, fixing a garbage collection problem.
164
165## 2.1.0
166
167- Added: Node 0.12 support.
168
169## 2.0.2
170
171- Fixed: Node version specified in `package.json`.
172
173## 2.0.1
174
175- Fixed: no more infinite loop in Windows.
176
177## 2.0.0
178
179- Changed: module now creates cosmiconfig instances with `load` methods (see README).
180- Added: caching (enabled by the change above).
181- Removed: support for Node versions <4.
182
183## 1.1.0
184
185- Add `rcExtensions` option.
186
187## 1.0.2
188
189- Fix handling of `require()`'s within JS module configs.
190
191## 1.0.1
192
193- Switch Promise implementation to pinkie-promise.
194
195## 1.0.0
196
197- Initial release.
198
199[parse-json-pr-12]: https://github.com/sindresorhus/parse-json/pull/12
200
201[pr-101]: https://github.com/davidtheclark/cosmiconfig/pull/101
202
\No newline at end of file