递归地找到最接近的package.json node.js

时间:2018-03-20 08:49:37

标签: javascript json node.js path require

我最近使用节点js,我想以递归方式找到最接近的package.json。实际上,继续查找package.json直到不会命中它。

我的文件夹树

root/
  -contarats/
   -proto/
    some.proto
  -package.json 

"script": {
"contracts": "generate-some-contracts contracts/proto contracts",
}

const input = process.argv[2]
const settings = require(path.resolve(input, 'package.json'))

1 个答案:

答案 0 :(得分:1)

您是否在寻找迭代目录的方法?如果是这样,那就是一个可以做到这一点的同步功能

function search_sync(dir) {
var results = []
var list = fs.readdirSync(dir)
list.forEach(function(file) {
    file = path.resolve(dir, file)
    filename = file.split('\\');
    filename = filename[filename.length-1]
    var stat = fs.statSync(file)
    if (stat && stat.isDirectory()) results = results.concat(search_sync(file))
    else if(filename == 'package.json')results.push(file)
})
return results

}

这将返回任何名为package.json的文件的数组及其完整文件路径。 EG:

search_sync('./')

[C:\Users\User\MyNodeProject\package.json,
C:\Users\User\MyNodeProject\npm\someDependency\package.json,
C:\Users\User\MyNodeProject\npm\someOtherDependency\package.json]

就个人而言,我会用他们的' \'来打破每一行。字符,看看哪一个更接近我的根文件夹