1const { resolve } = require('path') 2const { stat } = require('fs/promises') 3const { walkUp } = require('walk-up-path') 4 5const fileExists = async (file) => { 6 try { 7 const res = await stat(file) 8 return res.isFile() 9 } catch { 10 return false 11 } 12} 13 14const localFileExists = async (dir, binName, root) => { 15 for (const path of walkUp(dir)) { 16 const binDir = resolve(path, 'node_modules', '.bin') 17 18 if (await fileExists(resolve(binDir, binName))) { 19 return binDir 20 } 21 22 if (path.toLowerCase() === resolve(root).toLowerCase()) { 23 return false 24 } 25 } 26 27 return false 28} 29 30module.exports = { 31 fileExists, 32 localFileExists, 33} 34