@@ -266,8 +266,9 @@ export async function detectPackageEnvironment({
266266 let pkgMinAgentVersion = minSupportedAgentVersion
267267 let pkgMinNodeVersion = minSupportedNodeVersion
268268 if ( pkgJson ) {
269- const agentRange = pkgJson . engines ?. [ agent ]
270- const nodeRange = pkgJson . engines ?. [ 'node' ]
269+ const { engines } = pkgJson
270+ const agentRange = engines ?. [ agent ]
271+ const nodeRange = engines ?. [ 'node' ]
271272 if ( isNonEmptyString ( agentRange ) ) {
272273 // Roughly check agent range as semver.coerce will strip leading
273274 // v's, carets (^), comparators (<,<=,>,>=,=), and tildes (~).
@@ -339,8 +340,8 @@ export async function detectPackageEnvironment({
339340 pkgPath,
340341 pkgSupported,
341342 pkgRequirements : {
342- agent : pkgMinAgentVersion ,
343- node : pkgMinNodeVersion
343+ agent : `>= ${ pkgMinAgentVersion } ` ,
344+ node : `>= ${ pkgMinNodeVersion } `
344345 }
345346 }
346347}
@@ -373,17 +374,31 @@ export async function detectAndValidatePackageEnvironment(
373374 )
374375 }
375376 } )
377+ const { agent, agentVersion } = details
378+ if ( ! details . agentSupported ) {
379+ const minVersion = constants . minimumVersionByAgent . get ( agent ) !
380+ logger ?. fail (
381+ cmdPrefixMessage (
382+ cmdName ,
383+ `Requires ${ agent } >=${ minVersion } . Current version: ${ agentVersion ?? 'unknown' } .`
384+ )
385+ )
386+ return
387+ }
376388 if ( ! details . pkgSupported ) {
377389 logger ?. fail (
378- cmdPrefixMessage ( cmdName , 'No supported Node or browser range detected' )
390+ cmdPrefixMessage (
391+ cmdName ,
392+ `Package engine "node" or "${ agent } " range not met`
393+ )
379394 )
380395 return
381396 }
382- if ( details . agent === VLT ) {
397+ if ( agent === VLT ) {
383398 logger ?. fail (
384399 cmdPrefixMessage (
385400 cmdName ,
386- `${ details . agent } does not support overrides. Soon, though ⚡`
401+ `${ agent } does not support overrides. Soon, though ⚡`
387402 )
388403 )
389404 return
@@ -401,11 +416,11 @@ export async function detectAndValidatePackageEnvironment(
401416 logger ?. fail ( cmdPrefixMessage ( cmdName , `No ${ PACKAGE_JSON } found` ) )
402417 return
403418 }
404- if ( prod && ( details . agent === BUN || details . agent === YARN_BERRY ) ) {
419+ if ( prod && ( agent === BUN || agent === YARN_BERRY ) ) {
405420 logger ?. fail (
406421 cmdPrefixMessage (
407422 cmdName ,
408- `--prod not supported for ${ details . agent } ${ details . agentVersion ? `@${ details . agentVersion . version } ` : '' } `
423+ `--prod not supported for ${ agent } ${ agentVersion ? `@${ agentVersion } ` : '' } `
409424 )
410425 )
411426 return
0 commit comments