codekingpro/portable-devtools
114k
1const { resolve } = require('node:path')
2const { stat } = require('node: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 