diff --git a/crates/turborepo-lockfiles/src/npm.rs b/crates/turborepo-lockfiles/src/npm.rs index 6374a11baf4c7..dbae72cc841b1 100644 --- a/crates/turborepo-lockfiles/src/npm.rs +++ b/crates/turborepo-lockfiles/src/npm.rs @@ -87,12 +87,12 @@ impl Lockfile for NpmLockfile { Self::possible_npm_deps(key, name) .into_iter() .find_map(|possible_key| { - self.packages.get(&possible_key).map(|entry| { - let version = entry.version.as_deref().ok_or_else(|| { - Error::MissingVersion(possible_key.clone()) - })?; - Ok((possible_key, version.to_string())) - }) + let entry = self.packages.get(&possible_key)?; + match entry.version.as_deref() { + Some(version) => Some(Ok((possible_key, version.to_string()))), + None if entry.resolved.is_some() => None, + None => Some(Err(Error::MissingVersion(possible_key.clone()))), + } }) }) .collect() @@ -189,6 +189,7 @@ impl NpmPackage { .keys() .chain(self.dev_dependencies.keys()) .chain(self.optional_dependencies.keys()) + .chain(self.peer_dependencies.keys()) } } @@ -345,6 +346,16 @@ mod test { "node_modules/turbo-windows-arm64", ], ), + ( + "node_modules/@babel/helper-compilation-targets", + vec![ + "node_modules/@babel/compat-data", + "node_modules/@babel/core", + "node_modules/@babel/helper-validator-option", + "node_modules/browserslist", + "node_modules/semver", + ], + ), ]; for (key, expected) in &tests {