# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).

## [v0.10.0](https://github.com/ljharb/ls-engines/compare/v0.9.4...v0.10.0) - 2025-12-22

### Commits

- [Dev Deps] update `eslint`, `@ljharb/eslint-config` [`9bdfde1`](https://github.com/ljharb/ls-engines/commit/9bdfde14d3cde5659f83569d5cb14b23163dfbeb)
- [Refactor] switch from yargs to pargs [`52031da`](https://github.com/ljharb/ls-engines/commit/52031da788e6efd64feaa3049bd63e0ead5bb116)
- [Refactor] extract fulfilled result processing into separate module [`6621295`](https://github.com/ljharb/ls-engines/commit/66212959ba38c5f545905ccb665446d0996e2816)
- [Deps] remove unused and no-longer-needed deps [`04c90fb`](https://github.com/ljharb/ls-engines/commit/04c90fb506947a50b030b2a1957de4eabafae8ba)
- [Refactor] use `util.styleText` instead of `colors` [`b77a164`](https://github.com/ljharb/ls-engines/commit/b77a164e7b585f75cb802c123963d8708d4e89ed)
- [Tests] add regression test for --save flag modifying package.json [`fb74dd9`](https://github.com/ljharb/ls-engines/commit/fb74dd9fa7ad8469185295e773ce275487f749a5)
- [Refactor] convert CLI entrypoint to ESM [`f5f4084`](https://github.com/ljharb/ls-engines/commit/f5f4084be15c2acef3321a417d08b82a5eefe46d)
- [Breaking] require node 22 [`9d4fbbc`](https://github.com/ljharb/ls-engines/commit/9d4fbbcd235d869827935c9353508b5ef506d1dd)
- [Fix] correctly extract save function from fulfilled result value [`4d04d3c`](https://github.com/ljharb/ls-engines/commit/4d04d3ccc8326f9876ebcce68033a6d5e6937afa)
- [Deps] update `@npmcli/arborist`, `json-file-plus`, `pacote` [`a6f1e0e`](https://github.com/ljharb/ls-engines/commit/a6f1e0e244478b1c0e17690f12a01d06fbad66ef)
- [Dev Deps] update `nyc` [`1569183`](https://github.com/ljharb/ls-engines/commit/15691839194284d42a6ccaac41bc3cde57a0b34c)
- [Dev Deps] update `npmignore` [`b1342bb`](https://github.com/ljharb/ls-engines/commit/b1342bbe704d5ea5d61628f368b1e98c89057e26)
- [Deps] update `json-file-plus` [`fa28493`](https://github.com/ljharb/ls-engines/commit/fa284938b5f23ac5799eed25e1ceae110c63e8b0)
- [Deps] update `get-dep-tree` [`53f3cfa`](https://github.com/ljharb/ls-engines/commit/53f3cfaaf5bd8f5e0eaaaf8ce2e515184597a165)
- [Dev Deps] update `@ljharb/eslint-config` [`db2c528`](https://github.com/ljharb/ls-engines/commit/db2c528d52eb787ca1411081bb46a40d82e90580)

## [v0.9.4](https://github.com/ljharb/ls-engines/compare/v0.9.3...v0.9.4) - 2025-12-16

### Commits

- [New] add `devEngines` support [`e474d52`](https://github.com/ljharb/ls-engines/commit/e474d52023bd73ac8a5887db6f2bbecdba0c7e17)
- [Tests] update fixtures [`922454d`](https://github.com/ljharb/ls-engines/commit/922454d5a51b4516d08ffca48ed3a780eb5bbd87)
- [Tests] increase coverage [`8fddd8e`](https://github.com/ljharb/ls-engines/commit/8fddd8eada8adb8d7b3ec157117e780a7df82299)
- [Tests] `peer-subset-root`: add peer dep as devDep for consistent install across npm versions [`37c0e32`](https://github.com/ljharb/ls-engines/commit/37c0e32489e57937f6e9a319611c700bfcbf23c9)
- [Fix] `checkCurrent`: use the computed `graphValid`, not the `graphValids` object [`c90bdf7`](https://github.com/ljharb/ls-engines/commit/c90bdf7e86fd7af1942c16c598cded8472fd0af5)
- [Refactor] make the engines field name dynamic [`c3d0bd1`](https://github.com/ljharb/ls-engines/commit/c3d0bd1803498d958ba23e62afcd01fb88b9d2b8)
- [Tests] add coverage [`bfc1a2d`](https://github.com/ljharb/ls-engines/commit/bfc1a2d9069c07eb73afcfab8447717b1f28105c)
- [Tests] add coverage for getGraphEntries default values [`9ad3ae1`](https://github.com/ljharb/ls-engines/commit/9ad3ae1f179080ebb981e734dceefb7e47c3edd7)
- [Dev Deps] update `@ljharb/eslint-config`, `auto-changelog`, `eslint`, `es-value-fixtures`, `npmignore`, `object-inspect`, `tape` [`19b7f79`](https://github.com/ljharb/ls-engines/commit/19b7f79a7ab95e1e45ab841c53d36b1afe30517a)
- [Deps] update `json-file-plus`, `lockfile-info`, `object.values`, `semver`, `table` [`0575332`](https://github.com/ljharb/ls-engines/commit/0575332bd976c5fe66beb0e5ac43e176185e641e)
- [Dev Deps] use `npm audit` instead of `aud` [`7739d61`](https://github.com/ljharb/ls-engines/commit/7739d617fe73f74b1bdd3c0327af9db895440a5c)
- [Dev Deps] add missing peer dep [`ff8df75`](https://github.com/ljharb/ls-engines/commit/ff8df753baf1d09746c1137f0a0117ae9d62b05c)

## [v0.9.3](https://github.com/ljharb/ls-engines/compare/v0.9.2...v0.9.3) - 2024-07-31

### Commits

- [Tests] update snapshots [`a323066`](https://github.com/ljharb/ls-engines/commit/a323066cfae107ef00e4656525d3136f1ec82f57)
- [Fix] add missing DEBUG output [`8bfc69b`](https://github.com/ljharb/ls-engines/commit/8bfc69bb50cc928921dbe66f41c2d9f4ff27b985)
- [Dev Deps] update `aud`, `object-inspect` [`32df121`](https://github.com/ljharb/ls-engines/commit/32df1219c61564110b959fe1dd351122ea8564b9)
- [Dev Deps] update `aud` [`f23f739`](https://github.com/ljharb/ls-engines/commit/f23f73982595cc5824279d009537b31392a6ffef)
- [Deps] update `get-dep-tree` [`c1a1fab`](https://github.com/ljharb/ls-engines/commit/c1a1fab3eef04292a6aadab1084edf3879f51667)
- [Fix] allow `--current` to be explicitly passed [`a2ba4ba`](https://github.com/ljharb/ls-engines/commit/a2ba4bacf09648993ccb5d7369e35c1ca0181aa0)
- [meta] fix engines declaration [`96493ec`](https://github.com/ljharb/ls-engines/commit/96493ecac70d93719d9be42c50da61c379183bef)
- [Deps] update `semver` [`819e33e`](https://github.com/ljharb/ls-engines/commit/819e33e9812cf1bd16ba0ba9673e30c749e23b86)

## [v0.9.2](https://github.com/ljharb/ls-engines/compare/v0.9.1...v0.9.2) - 2024-06-16

### Commits

- [Tests] update fixtures [`91847d4`](https://github.com/ljharb/ls-engines/commit/91847d4d554da4170c96c985795c9a2d0a62fa5d)
- [Tests] update fixtures [`603dc39`](https://github.com/ljharb/ls-engines/commit/603dc39ff3e68c41a36eb7570eb605501cf1cc62)
- [Deps] update `@npmcli/arborist`, `array.prototype.some`, `object.fromentries`, `object.values`, `semver`, `table`; switch from `array.prototype.group` to `object.groupby` [`56f571f`](https://github.com/ljharb/ls-engines/commit/56f571f27cad4e901681b2bf5bad46bfaad2b399)
- [Tests] update snapshots [`08daaae`](https://github.com/ljharb/ls-engines/commit/08daaae43b88fc99878a285917b0358fecf8c839)
- [New] add `process.env.DEBUG` output [`d604fb6`](https://github.com/ljharb/ls-engines/commit/d604fb6b02ae384985ff07035c9d5ba4036d61c0)
- [Dev Deps] update `aud`, `npmignore`, `tape` [`b3c5f3a`](https://github.com/ljharb/ls-engines/commit/b3c5f3a7bbfcdf56429afe057cca413f914d3fd9)
- [Deps] update `array.prototype.tosorted`, `get-json` [`a7f14a3`](https://github.com/ljharb/ls-engines/commit/a7f14a319572d11084abd2c9bcbaaedd3c5fb416)
- [Deps] update `array.prototype.tosorted`, `semver` [`ef62c4f`](https://github.com/ljharb/ls-engines/commit/ef62c4fe1f07afa2a4d3eae1a35af31bfd47c0f7)
- [Tests] update `tape` [`ce1f74f`](https://github.com/ljharb/ls-engines/commit/ce1f74f7913cd9165c1df20f0116f1c97e77c859)
- [Dev Deps] update `@ljharb/eslint-config` [`f43fe8a`](https://github.com/ljharb/ls-engines/commit/f43fe8a38e46cab19ff60d0c54841c9de8086892)
- [Tests] skip moderate CVEs [`7007576`](https://github.com/ljharb/ls-engines/commit/7007576a61d56345316b941987dc653b6f526e11)

## [v0.9.1](https://github.com/ljharb/ls-engines/compare/v0.9.0...v0.9.1) - 2023-11-15

### Commits

- [Refactor] extract `getGraphEntries` [`a2d6348`](https://github.com/ljharb/ls-engines/commit/a2d6348990070675021010dda09a458dfc679fc0)
- [Refactor] `getGraphEntries`: sort output by package name and node version, for determinism [`74690d8`](https://github.com/ljharb/ls-engines/commit/74690d8d2916f4109cfb29095b8a21e72001f986)
- [Refactor] extract `getGraphValids`, `validVersionsForEngines` [`f6d807e`](https://github.com/ljharb/ls-engines/commit/f6d807e1e1460548873586e9fa18caa27a53002a)
- [Refactor] extract `getAllVersions` [`0d0d327`](https://github.com/ljharb/ls-engines/commit/0d0d3277201ce64a3a1277b6a07249b9f82ee78c)
- [Refactor] some code cleanup [`ac05eaf`](https://github.com/ljharb/ls-engines/commit/ac05eafa9d19a9a2dff9a83d9e940a1e33b48741)
- [Robustness] `getGraphEntries`: avoid builtin prototype methods [`24f4201`](https://github.com/ljharb/ls-engines/commit/24f42017655811f9096294f826f795cd00e2ff21)
- [Refactor] use arborist querySelectorAll instead of filtering inventory [`dc77370`](https://github.com/ljharb/ls-engines/commit/dc77370b2e7875a3457db4eb58b32fced226e5bc)
- [Tests] update fixtures; `depd` was removed in https://github.com/node-modules/agentkeepalive/pull/114 [`e5c1783`](https://github.com/ljharb/ls-engines/commit/e5c1783fcf81b1a7f5c4a1668403490239f89542)
- [Deps] update `@npmcli/arborist`, `object.fromentries`, `object.values`, `pacote`, `promise.allsettled`, `semver`, `yargs` [`baf84ac`](https://github.com/ljharb/ls-engines/commit/baf84ac31371e6043f01f338f80feaf83f0ed5b4)
- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`71295f2`](https://github.com/ljharb/ls-engines/commit/71295f25192eb03571754ab27fba31df5938566f)
- [Refactor] remove unneccesary promise creation when the graph is empty [`dbc0dde`](https://github.com/ljharb/ls-engines/commit/dbc0dde2d6922704c606d2374fc471dead161903)

## [v0.9.0](https://github.com/ljharb/ls-engines/compare/v0.8.1...v0.9.0) - 2023-01-26

### Commits

- [Breaking] default `peer` to `true` [`b3f0334`](https://github.com/ljharb/ls-engines/commit/b3f03348ecae04cddbacffac9edf9a661fd63e8f)
- [Refactor] use `array.prototype.group` [`bc47c26`](https://github.com/ljharb/ls-engines/commit/bc47c264496aeaf3910eb09992f99b82560c9123)
- [eslint] use optional chaining [`6922820`](https://github.com/ljharb/ls-engines/commit/692282041984a145f72ca971e2d24d1c7b41ef9f)

## [v0.8.1](https://github.com/ljharb/ls-engines/compare/v0.8.0...v0.8.1) - 2023-01-25

### Commits

- [Fix] sort and dedupe "conflicting dependencies" table [`e0062e1`](https://github.com/ljharb/ls-engines/commit/e0062e1366f2113570d0a125ae7b12c308a5290b)
- [Fix] prune, because `get-dep-tree` isn’t consistently doing it for some reason [`1586dbd`](https://github.com/ljharb/ls-engines/commit/1586dbd31956b9bcc0e953b9edfc6d3969e7053b)
- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`caf240e`](https://github.com/ljharb/ls-engines/commit/caf240e153feca18f13ca9d782155e17004036cb)
- [Deps] update arborist, `get-dep-tree` [`1908a6b`](https://github.com/ljharb/ls-engines/commit/1908a6b35f753412036d5e1d6a3cb4374b2a5a45)

## [v0.8.0](https://github.com/ljharb/ls-engines/compare/v0.7.0...v0.8.0) - 2022-12-19

### Commits

- [Breaking] drop node 12, update `@npmcli/arborist`, `pacote` [`6e00358`](https://github.com/ljharb/ls-engines/commit/6e003585c7b4c0b3365590226092184c3aa0d9d1)
- [Tests] update mocks [`d4c1985`](https://github.com/ljharb/ls-engines/commit/d4c19857fe1ba00f6582da7e45d5816f233fb04e)
- [Deps] update `@npmcli/arborist`, `object.fromentries`, `object.values`, `pacote`, `promise.allsettled`, `table`, `yargs` [`1f9c675`](https://github.com/ljharb/ls-engines/commit/1f9c6754e72325471eaa11949c5eed32d1e800b2)
- [Deps] update `@npmcli/arborist`, `get-dep-tree`, `pacote`, `semver`, `yargs` [`5e93f21`](https://github.com/ljharb/ls-engines/commit/5e93f21d11a0dfdbb1a104ec449837f5c52cf7d9)
- [actions] update rebase action [`dd459a9`](https://github.com/ljharb/ls-engines/commit/dd459a916589c89b32864cc072fda77ec7a38ea5)
- [Dev Deps] update `aud`, `tape` [`64fcce4`](https://github.com/ljharb/ls-engines/commit/64fcce46ad0ac06d290188c57163cb22be6205be)

## [v0.7.0](https://github.com/ljharb/ls-engines/compare/v0.6.7...v0.7.0) - 2022-05-25

### Commits

- [Breaking] output current versions, and computed valid versions, in a table [`7336438`](https://github.com/ljharb/ls-engines/commit/73364389996613a55284cccb20acb9a7eec48d37)
- [Refactor] hard-wrap version lists for readability [`50e2d90`](https://github.com/ljharb/ls-engines/commit/50e2d90c19e0615b8a14312af29611a7a54c3fe6)
- [Breaking] use `&gt;= x` instead of "every ^major since x" [`87be7c5`](https://github.com/ljharb/ls-engines/commit/87be7c5a1f91e6c563a66b43580188d99ff32bf8)
- [Fix] make error output more accurate [`a069534`](https://github.com/ljharb/ls-engines/commit/a0695345d2b74c7e7f324814fa2ae19ea05ef89e)
- [New] add hidden `engines` option [`9f3bc8c`](https://github.com/ljharb/ls-engines/commit/9f3bc8c4924c637ed3018649398a9356c6cd2bed)
- [Refactor] prepare for multiple engines [`fec1d47`](https://github.com/ljharb/ls-engines/commit/fec1d4706003d1926f484b95326f41fe685c80f0)
- [Breaking] tighten up `engines.node`; update `@npmcli/arborist`, `@npmcli/run-script`, `object.fromentries`, `pacote`, `promise.allsettled`, `yargs` [`803722e`](https://github.com/ljharb/ls-engines/commit/803722e8945548cb520b2f115ca07dce0a39e5bd)
- [Breaking] `get-node-versions`: don’t bother with node &lt; 0.4 [`5f15ebc`](https://github.com/ljharb/ls-engines/commit/5f15ebce73463cabe3e5043de6bc246836597618)

## [v0.6.7](https://github.com/ljharb/ls-engines/compare/v0.6.6...v0.6.7) - 2022-05-25

### Commits

- [Tests] actually wire up mocked node versions [`3909a65`](https://github.com/ljharb/ls-engines/commit/3909a65266c4c48da4951562f752ad4d497eac19)
- [Tests] fix test bug and actually run all tests [`7feb745`](https://github.com/ljharb/ls-engines/commit/7feb7454b481153e29fba82c88e207e43a827aff)
- [Refactor] extract `checkEngines` [`3783795`](https://github.com/ljharb/ls-engines/commit/37837955a4ab6defe51e345e04c9719d0974c353)
- [meta] gitignore `npmignore` [`5113cdc`](https://github.com/ljharb/ls-engines/commit/5113cdce6589aeb455da615fb35189509fafb559)
- [Tests] make file ops async; hopefully improve test perf [`2a48297`](https://github.com/ljharb/ls-engines/commit/2a482973eeb9bb8d640a9484781a0e9b9ba44624)
- Revert "[Fix] peg dependency versions due to breaking change in `@npmcli/run-script`" [`1371733`](https://github.com/ljharb/ls-engines/commit/13717332dc38a24b44235784378045930d03822c)
- [Fix] peg dependency versions due to breaking change in `@npmcli/run-script` [`317e754`](https://github.com/ljharb/ls-engines/commit/317e7548e4c5c99087f7fd28b110518ddff05d25)
- [Deps] update `pacote`, `yargs` [`14745f4`](https://github.com/ljharb/ls-engines/commit/14745f4b7de909c9f174448487b9ae2bf1eca018)
- [Tests] update mocks [`171d981`](https://github.com/ljharb/ls-engines/commit/171d981587c71838c5c7acef4d161b6d98e4b8ca)
- [Dependencies] update `yargs` [`4e3b5d2`](https://github.com/ljharb/ls-engines/commit/4e3b5d2a6da7005821575fc82bf85cca9053bdf6)
- [meta] npmignore test mocks [`102fcc4`](https://github.com/ljharb/ls-engines/commit/102fcc4f0a6c1f2aecc0a9fdb478366b54e5efbc)

## [v0.6.6](https://github.com/ljharb/ls-engines/compare/v0.6.5...v0.6.6) - 2022-05-11

### Commits

- [Tests] mock out network requests [`5db4055`](https://github.com/ljharb/ls-engines/commit/5db405577a99e853410153b31fdaf671adf1657c)
- [Refactor] extract `checkCurrent` [`d944205`](https://github.com/ljharb/ls-engines/commit/d94420553a95ecf1d9472d8b348d9ebc418f73ff)
- [Refactor] extract `getLatestMajors` [`7f94a43`](https://github.com/ljharb/ls-engines/commit/7f94a433d1d8b926d6aa43af2f3438e7221cfc8e)
- [meta] use `npmignore` to autogenerate an npmignore file [`deb785c`](https://github.com/ljharb/ls-engines/commit/deb785c02e093ae4cdc5bc682c1b40cdca1841a5)
- [Deps] update `@npmcli/arborist`, `get-dep-tree`, `semver`, `yargs` [`e2dca87`](https://github.com/ljharb/ls-engines/commit/e2dca872610745922bba69f4b86f6e838ac7e72b)
- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`afefe4b`](https://github.com/ljharb/ls-engines/commit/afefe4b3c5cf7daf15da7fd85c42b53ca7495f0d)
- [Deps] update `@npmcli/arborist`, `pacote` [`8bacc8a`](https://github.com/ljharb/ls-engines/commit/8bacc8aa5861734eb1e5166bbcef90e46be5cd6b)

## [v0.6.5](https://github.com/ljharb/ls-engines/compare/v0.6.4...v0.6.5) - 2022-02-10

### Fixed

- [New] show conflicting dependencies [`#15`](https://github.com/ljharb/ls-engines/issues/15)

### Commits

- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`5846bb4`](https://github.com/ljharb/ls-engines/commit/5846bb429a30d050b366676a086f004d42c9d48c)
- [Deps] update `@npmcli/arborist`, `get-dep-tree`, `pacote` [`c6e7780`](https://github.com/ljharb/ls-engines/commit/c6e7780f4c49d5e562739b4578bb6c18d4a56a11)

## [v0.6.4](https://github.com/ljharb/ls-engines/compare/v0.6.3...v0.6.4) - 2022-01-16

## [v0.6.3](https://github.com/ljharb/ls-engines/compare/v0.6.2...v0.6.3) - 2022-01-09

### Commits

- [Fix] pin `colors` [`d43763f`](https://github.com/ljharb/ls-engines/commit/d43763fb3eef95f36d8f1ccfc25fa5137d80c9a9)

## [v0.6.2](https://github.com/ljharb/ls-engines/compare/v0.6.1...v0.6.2) - 2022-01-08

### Commits

- [Refactor] use `lockfile-info` [`cdc8978`](https://github.com/ljharb/ls-engines/commit/cdc8978e55dfbf19916c0aa9c1f93316c9be090b)
- [actions] reuse common workflows [`35ff2de`](https://github.com/ljharb/ls-engines/commit/35ff2ded86ce68b9f17c9b5310835eccb6bcd8a3)
- [Refactor] extract `getTree` to `get-dep-tree` [`ce8df4e`](https://github.com/ljharb/ls-engines/commit/ce8df4e9c317225ba55068e85fa1eb214f1b5283)
- [Refactor] use `colors` instead of `chalk` [`43ee3d7`](https://github.com/ljharb/ls-engines/commit/43ee3d7d2488feaba5ef15b58e9aeeb76c76fb0f)
- [Refactor] use yargs middleware [`23717ff`](https://github.com/ljharb/ls-engines/commit/23717ff18c633655286bfb9244a29cb9606068d8)
- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`ce0053a`](https://github.com/ljharb/ls-engines/commit/ce0053aec25e935538cfe0d1da4fc375bc726bbd)
- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`e6b0051`](https://github.com/ljharb/ls-engines/commit/e6b0051a266842173897f82fbe98246344df87c0)
- [Dev Deps] update `eslint` [`f1d0fbd`](https://github.com/ljharb/ls-engines/commit/f1d0fbde8097fb33871df5d3895545cd30e6344f)
- [Tests] update fixtures [`189a56f`](https://github.com/ljharb/ls-engines/commit/189a56f5c1ff08e196078a9d7925d6d19340fa0b)
- [Deps] update `@npmcli/arborist`, `table`, `yargs` [`0512361`](https://github.com/ljharb/ls-engines/commit/0512361355ece42356f2c735c295cc873d6cb200)
- [Deps] update `@npmcli/arborist`, `table` [`7c2caee`](https://github.com/ljharb/ls-engines/commit/7c2caeeaac623f2e2af3c1a69494295b5258b625)
- [Refactor] use the native `Promise.allSettled` [`e0c5471`](https://github.com/ljharb/ls-engines/commit/e0c54717caca870bb0c689961a1c367673899a40)
- [meta] widen `engines.node` to include &gt; 17 [`e98705d`](https://github.com/ljharb/ls-engines/commit/e98705db0a0429cf3a7bd704d8570f28653c959d)
- [Deps] update arborist, `table` [`fc0dbb0`](https://github.com/ljharb/ls-engines/commit/fc0dbb099a4d6d1803f7e3a564bfb1740079125a)
- [Deps] update `@npmcli/arborist`, `yargs` [`4583633`](https://github.com/ljharb/ls-engines/commit/4583633270bda312e7cad8b044669fd86bd5173e)
- [meta] add package.json to "exports" [`977093b`](https://github.com/ljharb/ls-engines/commit/977093ba1259137636292859a4fea8e084e179aa)

## [v0.6.1](https://github.com/ljharb/ls-engines/compare/v0.6.0...v0.6.1) - 2021-10-21

### Commits

- [New] add node 17 support [`9ad8820`](https://github.com/ljharb/ls-engines/commit/9ad882049ceecc392db05005edb677b3fb9acdf4)
- [Fix] `--current` is conceptually incompatible with `--dev` [`b31c5cf`](https://github.com/ljharb/ls-engines/commit/b31c5cfaafaf3ec43443114c0aab296d4aa7a3bc)
- [Fix] prune twice since the first one didn’t take [`10ce9a8`](https://github.com/ljharb/ls-engines/commit/10ce9a8799751e1117837dca06d106d2b764a926)
- [Deps] update `@npmcli/arborist` [`2004507`](https://github.com/ljharb/ls-engines/commit/2004507599c745c2060089cfd629fa64cde35cc7)

## [v0.6.0](https://github.com/ljharb/ls-engines/compare/v0.5.1...v0.6.0) - 2021-10-16

### Commits

- [Breaking] update `@npmcli/arborist`, `pacote`; drop node v15, v14.15, and v14.14 [`5038746`](https://github.com/ljharb/ls-engines/commit/50387469b3b0c66dfb649da9574b6338e5556996)
- [Dev Deps] update `safe-publish-latest` [`4ec3f67`](https://github.com/ljharb/ls-engines/commit/4ec3f675dc4aad740a38318e865e45b18c849e87)

## [v0.5.1](https://github.com/ljharb/ls-engines/compare/v0.5.0...v0.5.1) - 2021-10-16

### Commits

- [Fix] properly handle the graph and the root being identical [`c0d5356`](https://github.com/ljharb/ls-engines/commit/c0d53568b9df1d8c0cc3580d69de7afee607b528)
- [readme] add github actions/codecov badges; update URLs [`7aaff98`](https://github.com/ljharb/ls-engines/commit/7aaff98ee0151c6fdc5c3343dc093ef0762dee4f)
- [Deps] update `@npmcli/arborist`, `chalk`, `pacote`, `promise.allsettled`, `table`, `yargs` [`3732e1c`](https://github.com/ljharb/ls-engines/commit/3732e1c6250245acb338fbfa7c8e8aa1abc2663d)
- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `auto-changelog`, `safe-publish-latest`, `tape` [`d7c7caf`](https://github.com/ljharb/ls-engines/commit/d7c7cafc8b6d668bca6f41c7ef82d57f63c6810e)
- [Tests] add `name` to lockfiles [`1914813`](https://github.com/ljharb/ls-engines/commit/19148130db4f83bb76fdce87527730dd286f0cc3)
- [Refactor] `getTree`: remove unused condition [`a473170`](https://github.com/ljharb/ls-engines/commit/a4731702eb8bf5e03dc020b1168f6fb3878667ef)
- [actions] update codecov uploader [`7158bd6`](https://github.com/ljharb/ls-engines/commit/7158bd6e4e13820c31ddbad6d4c9b0bc4b8dc4b7)
- [Fix] `getTree`: null out `node.root` instead of `node.parent` [`b91f667`](https://github.com/ljharb/ls-engines/commit/b91f667dda90460243b75f54114738b7d255cb20)

## [v0.5.0](https://github.com/ljharb/ls-engines/compare/v0.4.2...v0.5.0) - 2021-05-16

### Commits

- [Tests] update lockfiles to version 2 [`bcfb818`](https://github.com/ljharb/ls-engines/commit/bcfb818abb9ca0777e5afa30028e84c085ff3cb3)
- [New] add `--peer`, and ignore peerDeps by default [`45af3c7`](https://github.com/ljharb/ls-engines/commit/45af3c73132221489ba2a7d590ccc9dd225f0cd1)
- [Tests] add missing lockfile [`d20d3e7`](https://github.com/ljharb/ls-engines/commit/d20d3e7ce5b399a099aaf4a7550a68c83dfea058)
- [Tests] add `peer-subset-root` fixture [`3ccd227`](https://github.com/ljharb/ls-engines/commit/3ccd2271428b224e50f77fe20225e99afdd2ab93)
- [Fix] properly denote root/graph subset/superset scenarios [`efaf119`](https://github.com/ljharb/ls-engines/commit/efaf119f4df345a56851809bc73bbcd03136bda7)
- [Refactor] tweak how dev/prod flags are implemented [`05510da`](https://github.com/ljharb/ls-engines/commit/05510daab28a55f4103ee86b32529ddcd0b0b53f)
- [Breaking] update `yargs`; drop non-ESM node; require npm 7 [`872f413`](https://github.com/ljharb/ls-engines/commit/872f41356344a897ba94806e290f8333b17aa650)
- [Deps] update `@npmcli/arborist`, `table` [`116e5b9`](https://github.com/ljharb/ls-engines/commit/116e5b93bc5364ef178ab260491d69bc1a93c394)
- [Deps] update `@npmcli/arborist`, `table` [`6a868e1`](https://github.com/ljharb/ls-engines/commit/6a868e1a6091d45897c5976fd220ad96e665caea)
- [Dev Deps] update `eslint`, `@ljharb/eslint-config` [`de9b2fc`](https://github.com/ljharb/ls-engines/commit/de9b2fcf9e906445057d2e132a16511ae93329dc)

## [v0.4.2](https://github.com/ljharb/ls-engines/compare/v0.4.1...v0.4.2) - 2021-05-01

### Commits

- [Tests] update fixtures with node 16 release [`7ba62a9`](https://github.com/ljharb/ls-engines/commit/7ba62a95d3c91d46650436ad63058a76a61cd186)
- [actions] use `node/install` instead of `node/run`; use `codecov` action [`3eb8675`](https://github.com/ljharb/ls-engines/commit/3eb8675625ba4d6d32b24c159949d11aa17f7f86)
- [Fix] save changes when a new node major comes out [`519aec9`](https://github.com/ljharb/ls-engines/commit/519aec98b9feef0a36480b592d65057d6169cc91)
- [Deps] update `@npmcli/arborist`, `chalk`, `pacote`, `semver`, `table` [`9c3d896`](https://github.com/ljharb/ls-engines/commit/9c3d896ee7c1b28c65be29e88619e24d5df4dac6)
- [Tests] ensure lockfile output is agnostic to npm &lt; 7 and &gt;= 7 [`256f258`](https://github.com/ljharb/ls-engines/commit/256f258755aa750bad684de82efbb25eca08c5d9)
- [Dev Deps] update `aud`, `eslint`, `tape` [`41ee72e`](https://github.com/ljharb/ls-engines/commit/41ee72ef9b6eacc7911ae8fda5e9d313ce24923e)
- [meta] add `safe-publish-latest`; use `prepublishOnly` script for npm 7+ [`bae44d4`](https://github.com/ljharb/ls-engines/commit/bae44d45d1564601ebbcbdefd5e2bd600e7dd31f)

## [v0.4.1](https://github.com/ljharb/ls-engines/compare/v0.4.0...v0.4.1) - 2021-02-19

### Commits

- [Tests] update `salita` to avoid breaking changes [`5001208`](https://github.com/ljharb/ls-engines/commit/5001208a97e10845fcdbfc692883e9d77a17efd3)
- [Tests] migrate tests to Github Actions [`a72676e`](https://github.com/ljharb/ls-engines/commit/a72676e3b53dfc6d106a306459eb85b91e436ccf)
- [Tests] run `nyc` on all tests; use `tape` runner [`0f308a6`](https://github.com/ljharb/ls-engines/commit/0f308a6be49684323cf8b97266c8435106ced59d)
- [Deps] update `@npmcli/arborist`, `pacote`, `promise.allsettled`, `semver`, `table`, `yargs` [`d2285cf`](https://github.com/ljharb/ls-engines/commit/d2285cfb907b8b21c5a732d81e5420000ffc0797)
- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`0432338`](https://github.com/ljharb/ls-engines/commit/04323380673cbd293bdbc43b9279205c776df893)
- [Tests] filter out node experimental warnings [`6e18a2a`](https://github.com/ljharb/ls-engines/commit/6e18a2aaf6b323c23734a945b1288c9e25840b02)
- [Tests] add `GREP` filter [`2971ddb`](https://github.com/ljharb/ls-engines/commit/2971ddb3d56425a7ac7f3560522f10967e5df6d8)
- [readme] fix repo URLs; remove travis badge [`bb6a0ba`](https://github.com/ljharb/ls-engines/commit/bb6a0ba6c938c31aafe672bac2e768bfdb98d19b)
- [Deps] update `@npmcli/arborist` [`eff06be`](https://github.com/ljharb/ls-engines/commit/eff06be1bb444cea891cce278e167d78a1001cb0)
- [Deps] update `@npmcli/arborist` [`0e5c2ad`](https://github.com/ljharb/ls-engines/commit/0e5c2adbd24d28ac06b4363325748d398593bf1b)
- [actions] update "Allow Edits" workflow [`19ffc20`](https://github.com/ljharb/ls-engines/commit/19ffc20054fe1b9d3535287f068bbdaa61f795fd)
- [meta] do not publish github action workflow files [`86b5902`](https://github.com/ljharb/ls-engines/commit/86b5902787b02a71b6d272de64cc128af6631f25)

## [v0.4.0](https://github.com/ljharb/ls-engines/compare/v0.3.5...v0.4.0) - 2020-10-23

### Commits

- [Tests] add node 15 to snapshots [`af11fed`](https://github.com/ljharb/ls-engines/commit/af11feddc57a14f8b718df65bfcc59a71476c948)
- [actions] add "Allow Edits" workflow [`36fa631`](https://github.com/ljharb/ls-engines/commit/36fa631f83ac7017c66f070dad0d267d1dea854a)
- [meta] create FUNDING.yml [`b7fca88`](https://github.com/ljharb/ls-engines/commit/b7fca8825d4fd2ec81bd074e0ac0cba160f27852)
- [Breaking] [Deps] update `@npmcli/arborist`, `yargs` [`bd3fd61`](https://github.com/ljharb/ls-engines/commit/bd3fd617ab65d8964bd3c7d2f250ca8049873dec)
- [Dev Deps] update `eslint` [`8187d7d`](https://github.com/ljharb/ls-engines/commit/8187d7d0cd04bfafcedb1d8f8caa96017b20f58c)
- [actions] switch Automatic Rebase workflow to `pull_request_target` event [`7c55428`](https://github.com/ljharb/ls-engines/commit/7c5542856c6d714e0e694126ad168b04cb568b5f)

## [v0.3.5](https://github.com/ljharb/ls-engines/compare/v0.3.4...v0.3.5) - 2020-09-30

### Commits

- [Deps] update `@npmcli/arborist`, `pacote`, `table`, `yargs` [`e505157`](https://github.com/ljharb/ls-engines/commit/e505157704619a997c47584845bd8496d743def9)
- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `auto-changelog` [`4a6a702`](https://github.com/ljharb/ls-engines/commit/4a6a702f7499a88c3c5dd419231b5aa4cb6925e9)

## [v0.3.4](https://github.com/ljharb/ls-engines/compare/v0.3.3...v0.3.4) - 2020-07-13

### Fixed

- [Fix] `getNodeVersions`: use HTTPS instead of HTTP [`#21`](https://github.com/ljharb/ls-engines/issues/21)

### Commits

- [Tests] update fixtures to include latest node versions [`dc162ce`](https://github.com/ljharb/ls-engines/commit/dc162ce98771b842eac6b981eed77e365b9a633a)
- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`7e63120`](https://github.com/ljharb/ls-engines/commit/7e631202961b74999e1861cbc9860d1f411dd6a8)
- [Deps] update `@npmcli/arborist`, `chalk`, `pacote`, `semver`, `yargs` [`a9edf0d`](https://github.com/ljharb/ls-engines/commit/a9edf0df2f64bff883034f303fe4cc816633ab05)
- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `auto-changelog`, `tape`; add `aud` [`9566ee8`](https://github.com/ljharb/ls-engines/commit/9566ee802af7103f572466966c093331452a2b40)
- [Deps] update `arborist`, `chalk`, `yargs` [`8776b51`](https://github.com/ljharb/ls-engines/commit/8776b51b7aaf432cbc63f482fd5f7d22dd50ef25)
- [Deps] update `@npmcli/arborist`, `pacote`, `semver` [`fb24d15`](https://github.com/ljharb/ls-engines/commit/fb24d15d9ab2655b32628e33e18b4e0030390f87)
- [Deps] update `@npmcli/arborist`, `yargs` [`b614e56`](https://github.com/ljharb/ls-engines/commit/b614e56007694b3f2e5abb179db364af216737c6)
- [Dev Deps] update `auto-changelog`, `tape` [`4a33650`](https://github.com/ljharb/ls-engines/commit/4a33650cc7861de134c082bbac05f9362e88bf0c)
- [meta] only run `aud` on prod deps [`27ff448`](https://github.com/ljharb/ls-engines/commit/27ff448c6c593569d6220bb7f4a584f5f59d82ae)

## [v0.3.3](https://github.com/ljharb/ls-engines/compare/v0.3.2...v0.3.3) - 2020-02-25

### Commits

- [New] improve “current node version” output [`3514176`](https://github.com/ljharb/ls-engines/commit/3514176b29635c0a57c0ffc4e7d6e0117e820c05)
- [Tests] update snapshots without explicitly listing node version numbers, so new node releases do not fail tests [`3ef994e`](https://github.com/ljharb/ls-engines/commit/3ef994ef101adb49829a1a8966513a3105a37948)
- [Fix] fix message; “engines" is not actually set to "*" [`66a93bc`](https://github.com/ljharb/ls-engines/commit/66a93bc4c10e4a380fc256aa09ad64b86263f43f)
- [Fix] `virtual`: when getting the pacote manifest, include the version string [`5a85b9b`](https://github.com/ljharb/ls-engines/commit/5a85b9b5ef639fda8cad101c6fbb969aceb2fc3d)
- [Tests] further reduce DOS-y behavior by serializing tests [`2a0b456`](https://github.com/ljharb/ls-engines/commit/2a0b456d3c7960f20e974fd373cfc46dcc8baffb)
- [Refactor] make `getLatestMajors` [`b64b6e2`](https://github.com/ljharb/ls-engines/commit/b64b6e2d1aa4a9dc34ba63190e1fc6a7d3c02058)
- [Refactor] move `prune` logic into `getTree` [`b9bc293`](https://github.com/ljharb/ls-engines/commit/b9bc293add1809772cfb8429babe0c368158f35e)
- [Refactor] improve “subset” logic; surface errors better [`e0b586d`](https://github.com/ljharb/ls-engines/commit/e0b586d42d06893704dc2efa38e9324608c2ea9e)
- [Tests] exit codes can be bitwise-ORed together [`c89e341`](https://github.com/ljharb/ls-engines/commit/c89e341e02505aabfb44d52d857aec2773f006bf)
- [Refactor] reveal errors more clearly in the final output rejecteds step [`caae8dd`](https://github.com/ljharb/ls-engines/commit/caae8dd4cd12f450c3e4e56c8c3138f30d2d189f)
- [Tests] make tests less DOS-y with hitting the npm servers; skip `fund` and `audit` npm install steps [`a1781a2`](https://github.com/ljharb/ls-engines/commit/a1781a2794d5908b6c33ec56eef74946bc091e4d)
- [Refactor] make `allVersions` construct, by engine [`60ae032`](https://github.com/ljharb/ls-engines/commit/60ae0328cbf396084ad8de092e4a53d3c61fd270)
- [Tests] lint bin files too [`c4ab430`](https://github.com/ljharb/ls-engines/commit/c4ab4307f106a0aad567afeb623caf48e385de7d)
- [Deps] update arborist, `pacote` [`218d07a`](https://github.com/ljharb/ls-engines/commit/218d07a5b35e2f459041586fb1a822ae16c3b2cf)
- [Tests] filter with `FIXTURE` env var [`c08358f`](https://github.com/ljharb/ls-engines/commit/c08358f40cd704085881a4e0f57620d641b9ea5a)
- [Deps] update arborist, `pacote` [`e846b2d`](https://github.com/ljharb/ls-engines/commit/e846b2d84f35ab17a9a8421af92d52ebcb70a1a9)
- [Deps] update `semver` [`e3cf5ff`](https://github.com/ljharb/ls-engines/commit/e3cf5ff61069e5ed074e19cb7057ebe17476af57)
- [Deps] update `@npmcli/arborist` to latest [`16ca3d5`](https://github.com/ljharb/ls-engines/commit/16ca3d52163b2f4562611619e7af1ff7c033e07e)

## [v0.3.2](https://github.com/ljharb/ls-engines/compare/v0.3.1...v0.3.2) - 2020-02-08

### Commits

- [Tests] add more tests, more fixtures; run in explicit `--dev` and `--production` mode also. [`5687f44`](https://github.com/ljharb/ls-engines/commit/5687f44e82ae301c1281968015bb92092eba19f7)
- Tests [`f969506`](https://github.com/ljharb/ls-engines/commit/f9695066d6e56523ee7888c8b94dd31dfe82415f)
- [Tests] update snapshots with latest node releases [`fdd6b3e`](https://github.com/ljharb/ls-engines/commit/fdd6b3e06780a6e276a0f6d1c70b99b3fda049fa)
- [Fix] "virtual" only works properly with lockfileVersion &gt;= 2 [`7b432ce`](https://github.com/ljharb/ls-engines/commit/7b432ce9c908b0612e5b90052fb3c8d2daac5f0c)
- [Refactor] avoid using `fs.promises` [`ae1095c`](https://github.com/ljharb/ls-engines/commit/ae1095c8497b68a445ea95c7b1bfb259aea9cac8)
- [Deps] update to the latest version of `@npmcli/arborist`, `pacote` [`a9e095f`](https://github.com/ljharb/ls-engines/commit/a9e095fcf8ffa95db330f533cd237fd4f0aa4c07)

## [v0.3.1](https://github.com/ljharb/ls-engines/compare/v0.3.0...v0.3.1) - 2020-02-01

### Fixed

- [Fix] actually read package‘s `engines` field [`#4`](https://github.com/ljharb/ls-engines/issues/4)

### Commits

- [Refactor] clean up eslint warnings [`7e551d0`](https://github.com/ljharb/ls-engines/commit/7e551d0157c553021bc0f08e03d4b2a0141da649)
- [readme] fix Travis CI badge [`243faab`](https://github.com/ljharb/ls-engines/commit/243faabc84f05a659fe0623c95a44fffa4e04f05)
- [Deps] update `semver` [`ebf72bf`](https://github.com/ljharb/ls-engines/commit/ebf72bfb350eecc4cb6d8c02c8db73c656ee5196)

## [v0.3.0](https://github.com/ljharb/ls-engines/compare/v0.2.1...v0.3.0) - 2020-01-31

### Commits

- [Breaking] ignore dev deps by default; add `--dev` and `--production` [`19d6843`](https://github.com/ljharb/ls-engines/commit/19d6843270c39cbac840776710b150ba39bdd3f4)

## [v0.2.1](https://github.com/ljharb/ls-engines/compare/v0.2.0...v0.2.1) - 2020-01-31

### Commits

- [Fix] get all latest majors when engines is “*” [`8e8fe5b`](https://github.com/ljharb/ls-engines/commit/8e8fe5b3dff9bee7910a496244a6e2e006d6307b)
- [Fix] add case where what the graph allows is a subset of what the root allows [`aecfb5c`](https://github.com/ljharb/ls-engines/commit/aecfb5ca12984e651980921ac90e88e682e84cf9)
- [Refactor] extract exit code constants [`712f3fc`](https://github.com/ljharb/ls-engines/commit/712f3fcf4c787b6b483c8b899475971ac90adc7b)
- [Fix] in “virtual” mode, arborist does not return the actual `package.json` data [`90d4d62`](https://github.com/ljharb/ls-engines/commit/90d4d62711e2870ce9e0576a7f206d8b1318fbc5)
- [Refactor] stylize `package.json` and `node_modules` consistently [`78a87dc`](https://github.com/ljharb/ls-engines/commit/78a87dc80161a571de0904e4e48400abf17013bf)

## [v0.2.0](https://github.com/ljharb/ls-engines/compare/v0.1.0...v0.2.0) - 2020-01-30

### Fixed

- [Breaking] validate root “engines” against graphs’ [`#2`](https://github.com/ljharb/ls-engines/issues/2)

### Commits

- [Refactor] modularize some things [`4e5f311`](https://github.com/ljharb/ls-engines/commit/4e5f311c243cfd383de70652883a918e813ba028)
- [New] add `--save` option, to persist ”engines” changes to package.json [`467e280`](https://github.com/ljharb/ls-engines/commit/467e280585d7493a4765be8273b97e783f06e216)
- Update README.md [`16f74f6`](https://github.com/ljharb/ls-engines/commit/16f74f6e26d86279a6291b416ba85912c728f1df)

## v0.1.0 - 2020-01-30

### Commits

- Initial implementation [`d4f1c2c`](https://github.com/ljharb/ls-engines/commit/d4f1c2c7aeabeeba1440fe3991779eb1b0e40726)
- Initial commit [`a24666b`](https://github.com/ljharb/ls-engines/commit/a24666b49218f2c006d4b8a848eacff9e352987d)
- readme [`f95187a`](https://github.com/ljharb/ls-engines/commit/f95187a57da93b7d26b2909143631aef662c1b9a)
- npm init [`6f2e352`](https://github.com/ljharb/ls-engines/commit/6f2e35299fa17fc6f7d8cd91d48994995be82208)
- [Tests] add `npm run lint` [`962ee39`](https://github.com/ljharb/ls-engines/commit/962ee39f147ee84ab0f5595bda7e2bb1c7e47f82)
- [meta] add `auto-changelog` [`32bdf23`](https://github.com/ljharb/ls-engines/commit/32bdf23847ed05b69a2fe3dbfd298500fbf2e662)
- [actions] add automatic rebasing / merge commit blocking [`80fb2d9`](https://github.com/ljharb/ls-engines/commit/80fb2d93bbb363966dee79463081ad6f2cdd9889)
- [Tests] use shared travis-ci configs [`626c7f4`](https://github.com/ljharb/ls-engines/commit/626c7f4096e79f211b8052a682d56ca4684c4408)
- Only apps should have lockfiles [`45fcb85`](https://github.com/ljharb/ls-engines/commit/45fcb85189a3e216615889e0ccc9249c5aa8fcfc)
