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 |
|
93 | 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.**
|
94 |
|
95 | 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.
|
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 |
|
101 | Additionally, 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 |
|
107 | More 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 |