# WHY THIS FILE EXISTS: `engines` ALONE IS ADVISORY. # # npm prints a warning for an unsatisfied `engines` range and installs anyway, and the warning scrolls # past in a wall of ERESOLVE peer-dependency noise. `engine-strict` is what turns it into a refusal, so # the person is told the actual problem instead of discovering it two steps later. # # WHAT IT PROTECTED AGAINST, measured on one tree in one sitting while @wordpress/notices was still a # dependency (it has since been removed, and that subtree with it): `npm ci` exits 1 under npm 10.9.8 # and 0 under npm 11.5.1. `@wordpress/theme`, nested under `@wordpress/notices`, declares vite ^7.3.2 # and esbuild ^0.27.2 as OPTIONAL peers; npm 10 builds an ideal tree that installs optional peers # anyway, so it wants a second vite 7 toolchain -- 31 entries the lockfile correctly does not have -- # and reports them as "missing from lock file". That message points at the lockfile, which is not the # problem, and the obvious response to it is `npm install`, which writes the unwanted subtree in. # # So the failure this prevents is not a broken install. It is a correct lockfile being "fixed". engine-strict=true