fix(arborist): use omit when checking ideal tree engine, centralize shouldOmit logic #8372
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
fixes #8369
fixes #6805
Fix: Skip engine validation for omitted dependencies
Problem
When running
npm install --omit=dev
, npm incorrectly validates engine requirements for devDependencies that won't be installed, causing unnecessary install failures. For example, a project with devDependencies requiring Node >=20.6.0 would fail to install on Node 18.x even when using--omit=dev
.Solution
Modified Arborist's engine validation to skip checking omitted dependencies. Added a centralized
shouldOmit()
method to the Node class and updated#checkEngineAndPlatform()
to respect omit flags. Nownpm install --omit=dev
succeeds when devDependencies have incompatible engine requirements, while still validating engines for dependencies that will actually be installed.Changes
lib/node.js
: AddedshouldOmit()
method for consistent omit logiclib/arborist/build-ideal-tree.js
: Skip engine checks for omitted dependencieslib/arborist/reify.js
,lib/audit-report.js
: Use centralized omit logic