preferred-node-version
Version:
Get the preferred Node.js version of a project or user
35 lines (24 loc) • 688 B
JavaScript
import isPlainObj from"is-plain-obj";
export const loadPackageJson=(content)=>{
if(!seemsValidPackageJson(content)){
return
}
const packageJson=safeJsonParse(content);
if(!objectHasEnginesNode(packageJson)){
return
}
return packageJson.engines.node
};
const seemsValidPackageJson=(content)=>
PACKAGE_JSON_VALID_WORDS.every((word)=>content.includes(word));
const PACKAGE_JSON_VALID_WORDS=["\"engines\"","\"node\""];
const safeJsonParse=(content)=>{
try{
return JSON.parse(content)
}catch{}
};
const objectHasEnginesNode=(packageJson)=>
isPlainObj(packageJson)&&
isPlainObj(packageJson.engines)&&
typeof packageJson.engines.node==="string"&&
packageJson.engines.node.trim()!=="";