# Change Log All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org). This document follows the guidelines of [Keep A Changelog](http://keepachangelog.com). ## [2.5.1] - 2022-10-07 ### Updated - **Dependencies:** [`774a164`](https://github.com/metalsmith/metalsmith/commit/774a164) - `debug`: 4.3.3 ▶︎ 4.3.4 - Clarified semver policy in README.md - Added SECURITY.md ### Fixed - Fixes [#373](https://github.com/metalsmith/metalsmith/issues/374): do not crash when postinstall script fails in specific environments ## [2.5.0] - 2022-06-10 Important note to [metalsmith-watch](https://github.com/FWeinb/metalsmith-watch#readme) users: Although 2.5.0 is a semver-minor release, it breaks compatibility with metalsmith-watch, which relies on the Metalsmith < 2.4.x private method signature using the outdated unyield package. See [issue #374](https://github.com/metalsmith/metalsmith/issues/374) for more details. ### Added - [#354] Added `Metalsmith#env` method. Supports passing `DEBUG` and `DEBUG_LOG` amongst others. Sets `CLI: true` when run from the metalsmith CLI. [`b42df8c`](https://github.com/metalsmith/metalsmith/commit/b42df8c), [`446c676`](https://github.com/metalsmith/metalsmith/commit/446c676), [`33d936b`](https://github.com/metalsmith/metalsmith/commit/33d936b), [`4c483a3`](https://github.com/metalsmith/metalsmith/commit/4c483a3) - [#356] Added `Metalsmith#debug` method for creating plugin debuggers - [#362] Upgraded all generator-based methods (`Metalsmith#read`,`Metalsmith#readFile`,`Metalsmith#write`,`Metalsmith#writeFile`, `Metalsmith#run` and `Metalsmith#process`) to dual callback-/ promise-based methods [`16a91c5`](https://github.com/metalsmith/metalsmith/commit/16a91c5), [`faf6ab6`](https://github.com/metalsmith/metalsmith/commit/faf6ab6), [`6cb6229`](https://github.com/metalsmith/metalsmith/commit/6cb6229) - Added org migration notification to postinstall script to encourage users to upgrade [`3a11a24`](https://github.com/metalsmith/metalsmith/commit/3a11a24) ### Removed - [#231] Dropped support for Node < 12 [`0a53007`](https://github.com/metalsmith/metalsmith/commit/0a53007) - **Dependencies:** - `thunkify`: replaced with promise-based implementation [`faf6ab6`](https://github.com/metalsmith/metalsmith/commit/faf6ab6) - `unyield` replaced with promise-based implementation [`faf6ab6`](https://github.com/metalsmith/metalsmith/commit/faf6ab6) - `co-fs-extra`: replaced with native Node.js methods [`faf6ab6`](https://github.com/metalsmith/metalsmith/commit/faf6ab6) - `chalk`: not necessary for the few colors used by Metalsmith CLI [`1dae1cb`](https://github.com/metalsmith/metalsmith/commit/a1dae1cb) - `clone`: see [#247] [`a871af6`](https://github.com/metalsmith/metalsmith/commit/a871af6) ### Updated - Restructured and updated `README.md` [`0da0c4d`](https://github.com/metalsmith/metalsmith/commit/0da0c4d) - [#247] Calling `Metalsmith#metadata` no longer clones the object passed to it, overwriting the previous metadata, but merges it into existing metadata. [#362]: https://github.com/metalsmith/metalsmith/issues/362 [#354]: https://github.com/metalsmith/metalsmith/issues/354 [#355]: https://github.com/metalsmith/metalsmith/issues/355 [#356]: https://github.com/metalsmith/metalsmith/issues/356 [#247]: https://github.com/metalsmith/metalsmith/issues/247 ### Fixed - [#355] Proper path resolution for edge-cases using CLI, running metalsmith from outside or subfolder of `metalsmith.directory()`[`5d75539`](https://github.com/metalsmith/metalsmith/commit/5d75539) ## [2.4.3] - 2022-05-16 ### Updated - **Dependencies:** [`774a164`](https://github.com/metalsmith/metalsmith/commit/774a164) - `micromatch`: 4.0.4 ▶︎ 4.0.5 - Updated README.md ### Fixed - Fixes repeat `metalsmith.match` file cache in repeat runs without re-read, see https://github.com/metalsmith/layouts/issues/183 [`a727309`](https://github.com/metalsmith/metalsmith/commit/a727309) ## [2.4.2] - 2022-02-13 ### Updated - **Dependencies:** [`af9dec0`](https://github.com/metalsmith/metalsmith/commit/af9dec0) - `chalk`: 3.0.0 ▶︎ 4.1.2 - Updated README.md ### Fixed - Fixed Metalsmith JSDoc type hints in VS code [`ebf82f4`](https://github.com/metalsmith/metalsmith/commit/ebf82f4) - Added package integrity test [`c539c67`](https://github.com/metalsmith/metalsmith/commit/c539c67) ## [2.4.1] - 2022-01-31 ### Fixed Bugfix: include index.js in package.json files ## [2.4.0] - 2022-01-31 ### Added - [#338] Added `Metalsmith#match` method. Plugins no longer need to require a matching library [`705c4bb`](https://github.com/metalsmith/metalsmith/commit/705c4bb), [`f01c724`](https://github.com/metalsmith/metalsmith/commit/f01c724) - [#358] Added TS-style JSdocs [`828b17e`](https://github.com/metalsmith/metalsmith/commit/828b17e) - Use native `fs.rm` instead of `rimraf` when available (Node 14.4+) [`fcbb76e`](https://github.com/metalsmith/metalsmith/commit/fcbb76e), [`66e4376`](https://github.com/metalsmith/metalsmith/commit/66e4376) - [#226] Allow passing a gray-matter options object to `Metalsmith#frontmatter` [`a6438d2`](https://github.com/metalsmith/metalsmith/commit/a6438d2) - Modernized dev setup [`ef7b781`](https://github.com/metalsmith/metalsmith/commit/ef7b781) - Added 8 new tests (match method, front-matter options, path & symbolic link handling) - Files object file paths are now guaranteed to be sorted aphabetically. [`4eb1184`](https://github.com/metalsmith/metalsmith/commit/4eb1184) - [#211] `Metalsmith#build` now returns a promise which you can attach a `then/catch` to or `await`. The build callback model is still available. [`6d5a42d`](https://github.com/metalsmith/metalsmith/commit/6d5a42d) ### Removed - [#231] Dropped support for Node < 8 [`2db47f5`](https://github.com/metalsmith/metalsmith/commit/75e6878), [`75e6878`](https://github.com/metalsmith/metalsmith/commit/75e6878) - **Dependencies:** - `has-generators`: obsolete in supported Node versions [`2db47f5`](https://github.com/metalsmith/metalsmith/commit/2db47f5) - `absolute` replaced with native Node `path.isAbsolute` [`c05f9e2`](https://github.com/metalsmith/metalsmith/commit/c05f9e2) (@Zearin) - `is` replaced with own implementation [`7eaac9e2`](https://github.com/metalsmith/metalsmith/commit/7eaac9e2), [`54dba0c1`](https://github.com/metalsmith/metalsmith/commit/54dba0c1) (@Zearin) - `recursive-readdir`: replaced with own implementation [`4eb1184`](https://github.com/metalsmith/metalsmith/commit/4eb1184) ### Updated - **Dependencies:** [`75e6878`](https://github.com/metalsmith/metalsmith/commit/75e6878) - `chalk`: 1.1.3 ▶︎ 3.0.0 - `gray-matter`: 2.0.0 ▶︎ 4.0.3 - `stat-mode`: 0.2.0 ▶︎ 1.0.0 - `rimraf`: 2.2.8 ▶︎ 3.0.2 - `ware`: 1.2.0 ▶︎ 1.3.0 - `commander` (used in CLI): 2.15.1 ▶︎ 6.2.1 - `win-fork` (used in CLI): replaced with `cross-spawn`:7.0.3 - Updated `CHANGELOG.md` format to follow “[Keep A Changelog](http://keepachangelog.com)” (#266) (@Zearin) ### Fixed - [#206] `Metalsmith#ignore` now only matches paths relative to `Metalsmith#source` (as it should). See linked issue for details [`4eb1184`](https://github.com/metalsmith/metalsmith/commit/4eb1184) - [#226] Metalsmith will no longer 'swallow' errors on invalid front-matter, they will be passed to `Metalsmith#build` [`a6438d2`](https://github.com/metalsmith/metalsmith/commit/a6438d2) - Fix test error on Windows [#158] (@moozzyk) - [#281] Metalsmith now properly handles symbolic links (will throw an ENOENT error or they can be `Metalsmith#ignore`'d) [`4eb1184`](https://github.com/metalsmith/metalsmith/commit/4eb1184) - [#178] `Metalsmith#ignore` now removes the matched files _before_ they are `statted` for glob-based ignores (saving some perf & potential errors). - [#295] Metalsmith now catches all FS errors and passes them to the build callback/ thenable appropriately. ### Security - Replace all occurences of `new Buffer` with `Buffer.from` #### `npm audit` vulnerability fixes - **Development Dependencies:** - `coveralls`: 2.11.6 ▶︎ 3.0.1 (#308) (@Zearin) Fix 5 “Moderate” vulnerabilities - `metalsmith-markdown`: 0.2.1 ▶︎ 0.2.2 (#312) (@Zearin) Fix 1 “Low” vulnerability [#158]: https://github.com/metalsmith/metalsmith/issues/158 [#178]: https://github.com/metalsmith/metalsmith/issues/178 [#206]: https://github.com/metalsmith/metalsmith/issues/206#issuecomment-1008289480 [#211]: https://github.com/metalsmith/metalsmith/issues/211 [#226]: https://github.com/metalsmith/metalsmith/issues/226 [#231]: https://github.com/metalsmith/metalsmith/issues/231 [#281]: https://github.com/metalsmith/metalsmith/issues/281 [#295]: https://github.com/metalsmith/metalsmith/issues/295 [#338]: https://github.com/metalsmith/metalsmith/issues/338 [#358]: https://github.com/metalsmith/metalsmith/issues/358 ## [2.3.0] - 2016-10-28 ### Added - Add packaging metadata to build the metalsmith snap ([#249]) ### Updated - Update dependencies ([#246]) ### Removed - Remove unused dependencies ### Fixed - Fix error when reading a symbolic link to a dir ([#229]) ### Security - Upgrade dependency to include security fix ([#258]) [#229]: https://github.com/metalsmith/metalsmith/pull/229 [#246]: https://github.com/metalsmith/metalsmith/pull/246 [#249]: https://github.com/metalsmith/metalsmith/pull/249 [#258]: https://github.com/metalsmith/metalsmith/pull/258 ## [2.2.2] - 2016-10-28 This version is the same as 2.2.0, and was released to counteract the accidental release of 2.2.1. (See 2.2.1 for details.) ## [2.2.1] - 2016-10-27 [YANKED] This release is identical to 2.3.0, but was mistakenly released as a SemVer-patch version when it should have been released as a SemVer-minor version. **Please use versions `<= 2.2.0` or `>= 2.2.2` instead.** ## [2.2.0] - 2016-08-11 ### Added - Add ability to use functions for `ignore` matchers ([#179]) - Add CLI option: `ignore` ([#232]) - Add `process` to process files and plugins without writing files ([#244]) ### Changed - Only remove the contents of the `destination` directory (not the directory itself) when `clean` is `true` ([#221]) [#179]: https://github.com/metalsmith/metalsmith/issues/179 [#221]: https://github.com/metalsmith/metalsmith/pull/221 [#232]: https://github.com/metalsmith/metalsmith/pull/232 [#244]: https://github.com/metalsmith/metalsmith/pull/244 ## [2.1.0] - 2015-09-24 ### Added - Add CLI option: `frontmatter` ## [2.0.1] - 2015-07-14 ### Fixed - META: bump patch because `2.0.0` was mistakenly already published ## [2.0.0] - 2015-07-14 ### Added - CLI: Add separate `_metalsmith` bin (to allow custom transpilers) ### Removed - Drop support for Node 0.10 (native and tests) ## [1.7.0] - 2015-04-30 ### Added - Add `ignore` ## [1.6.0] - 2015-04-14 ### Added - Add `concurrency` ## [1.5.0] - 2015-03-29 ### Added - Add ability to pass in plugins to `#run` ## [1.4.5] - 2015-03-27 ### Changed - Improve plugin error handling ## [1.4.4] - 2015-03-27 ### Fixed - Workaround the absence of `isAbsolute` from Node 0.10 ## [1.4.3] - 2015-03-27 ### Fixed - Fix typo in variable name ## [1.4.2] - 2015-03-26 ### Changed - Use `gray-matter` to parse frontmatter ### Fixed - Fix bug in frontmatter parser ## [1.4.1] - 2015-03-25 ### Changed - Nicer errors for invalid frontmatter ## [1.4.0] - 2015-03-25 ### Added - Add ability to override the read and write directory ## [1.3.0] - 2015-02-06 ### Added - Add support for local (non-npm, but still node) plugins ## [1.2.0] - 2015-02-04 ### Added - Add stack trace to CLI output ## [1.1.1] - 2015-01-25 ### Fixed - Update `recursive-readdir` to `1.2.1` to fix [#110] [#110]: https://github.com/metalsmith/metalsmith/pull/110 ## [1.1.0] - 2015-01-25 ### Added - Add type checking to getter/setters - Add support for alternate config file path - Add file-specific errors on writing and reading ## [1.0.1] - 2014-09-30 ### Changed - Move `gnode` to regular dependencies ## [1.0.0] - 2014-09-29 ### Added - Add generator support for Node 0.11 - Add absolute path support for `source` and `directory` - Add `#directory` getter and setter method - Add `#readFile` method to expose the core reading logic - Add `#writeFile` method to expose the core writing logic ### Changed - Change `#join` to `#path` and use `path.resolve` ### Fixed - CLI: Fix default `clean` setting ## [0.11.0] - 2014-09-12 ### Changed - Move `clean` logic to happen at the beginning of a build ## [0.10.0] - 2014-08-19 ### Added - Expose `stats` on files ## [0.9.0] - 2014-070-13 ### Added - Add `frontmatter` option (to disable frontmatter parsing, if desired) ## [0.8.1] - 2014-070-07 ### Changed - Update dependencies ## [0.8.0] - 2014-05-06 ### Added - Add `clean` option ## [0.7.0] - 2014-04-29 ### Changed - In `metalsmith.json`: Allow `plugins` be an array ## [0.6.1] - 2014-04-24 ### Changed - Update `ware` to `0.3.0` for passing arrays ## [0.6.0] - 2014-04-02 ### Added - `mode` handling for files ## [0.5.0] - 2014-03-21 ### Added - Remove `destination` directory when writing - Expose `#run` to run middleware stack ### Fixed - Fix jade examples ## [0.4.0] - 2014-03-14 ### Changed - Change `#metadata` to set a clone ## [0.3.0] - 2014-03-08 ### Changed - File contents are no longer trimmed ## [0.2.3] - 2014-03-07 ### Added - Add setting back to `#metadata` ## [0.2.2] - 2014-03-07 ### Fixed - Fix installation error ## [0.2.1] - 2014-03-07 ### Changed - CLI: use `chalk` instead of `colors` ## [0.2.0] - 2014-03-06 ### Changed - `#metadata` is now just a getter ## [0.1.0] - 2014-02-05 ### Changed - `contents` are now always a `Buffer` ## [0.0.4] - 2014-02-05 ### Fixed - Fix corrupted non-utf8 files ## [0.0.3] - 2014-02-05 ### Added - Expose `files` dictionary to `build` callback ## [0.0.2] - 2014-02-05 ### Changed - Do not mix in global metadata; leave it up to plugins ## 0.0.1 - 2014-02-04 :sparkles: [unreleased]: https://github.com/metalsmith/metalsmith/compare/v2.3.0...HEAD [2.4.0]: https://github.com/metalsmith/metalsmith/compare/v2.3.0...v2.4.0 [2.3.0]: https://github.com/metalsmith/metalsmith/compare/v2.2.2...v2.3.0 [2.2.2]: https://github.com/metalsmith/metalsmith/compare/v2.2.0...v2.2.2 [2.2.1]: https://github.com/metalsmith/metalsmith/compare/v2.2.0...v2.2.1 [2.2.0]: https://github.com/metalsmith/metalsmith/compare/v2.1.0...v2.2.0 [2.1.0]: https://github.com/metalsmith/metalsmith/compare/v2.0.1...v2.1.0 [2.0.1]: https://github.com/metalsmith/metalsmith/compare/v2.0.0...v2.0.1 [2.0.0]: https://github.com/metalsmith/metalsmith/compare/v1.7.0...v2.0.0 [1.7.0]: https://github.com/metalsmith/metalsmith/compare/v1.6.0...v1.7.0 [1.6.0]: https://github.com/metalsmith/metalsmith/compare/v1.5.0...v1.6.0 [1.5.0]: https://github.com/metalsmith/metalsmith/compare/v1.4.5...v1.5.0 [1.4.5]: https://github.com/metalsmith/metalsmith/compare/v1.4.4...v1.4.5 [1.4.4]: https://github.com/metalsmith/metalsmith/compare/v1.4.3...v1.4.4 [1.4.3]: https://github.com/metalsmith/metalsmith/compare/v1.4.2...v1.4.3 [1.4.2]: https://github.com/metalsmith/metalsmith/compare/v1.4.1...v1.4.2 [1.4.1]: https://github.com/metalsmith/metalsmith/compare/v1.4.0...v1.4.1 [1.4.0]: https://github.com/metalsmith/metalsmith/compare/v1.3.0...v1.4.0 [1.3.0]: https://github.com/metalsmith/metalsmith/compare/v1.2.0...v1.3.0 [1.2.0]: https://github.com/metalsmith/metalsmith/compare/v1.1.1...v1.2.0 [1.1.1]: https://github.com/metalsmith/metalsmith/compare/v1.1.0...v1.1.1 [1.1.0]: https://github.com/metalsmith/metalsmith/compare/v1.0.1...v1.1.0 [1.0.1]: https://github.com/metalsmith/metalsmith/compare/v1.0.0...v1.0.1 [1.0.0]: https://github.com/metalsmith/metalsmith/compare/v0.11.0...v1.0.0 [0.11.0]: https://github.com/metalsmith/metalsmith/compare/v0.10.0...v0.11.0 [0.10.0]: https://github.com/metalsmith/metalsmith/compare/v0.9.0...v0.10.0 [0.9.0]: https://github.com/metalsmith/metalsmith/compare/v0.8.1...v0.9.0 [0.8.1]: https://github.com/metalsmith/metalsmith/compare/v0.8.0...v0.8.1 [0.8.0]: https://github.com/metalsmith/metalsmith/compare/v0.7.0...v0.8.0 [0.7.0]: https://github.com/metalsmith/metalsmith/compare/v0.6.1...v0.7.0 [0.6.1]: https://github.com/metalsmith/metalsmith/compare/v0.6.0...v0.6.1 [0.6.0]: https://github.com/metalsmith/metalsmith/compare/v0.5.0...v0.6.0 [0.5.0]: https://github.com/metalsmith/metalsmith/compare/v0.4.0...v0.5.0 [0.4.0]: https://github.com/metalsmith/metalsmith/compare/v0.3.0...v0.4.0 [0.3.0]: https://github.com/metalsmith/metalsmith/compare/v0.2.3...v0.3.0 [0.2.3]: https://github.com/metalsmith/metalsmith/compare/v0.2.2...v0.2.3 [0.2.2]: https://github.com/metalsmith/metalsmith/compare/v0.2.1...v0.2.2 [0.2.1]: https://github.com/metalsmith/metalsmith/compare/v0.2.0...v0.2.1 [0.2.0]: https://github.com/metalsmith/metalsmith/compare/v0.1.0...v0.2.0 [0.1.0]: https://github.com/metalsmith/metalsmith/compare/v0.0.4...v0.1.0 [0.0.4]: https://github.com/metalsmith/metalsmith/compare/v0.0.3...v0.0.4 [0.0.3]: https://github.com/metalsmith/metalsmith/compare/v0.0.2...v0.0.3 [0.0.2]: https://github.com/metalsmith/metalsmith/compare/v0.0.1...v0.0.2