【问题标题】:recursively find the closest package.json node.js递归查找最近的 package.json node.js
【发布时间】:2018-08-29 00:04:52
【问题描述】:

我是node 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'))

【问题讨论】:

    标签: javascript json node.js path require


    【解决方案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 的文件及其完整文件路径的数组。例如:

    search_sync('./')
    
    [C:\Users\User\MyNodeProject\package.json,
    C:\Users\User\MyNodeProject\npm\someDependency\package.json,
    C:\Users\User\MyNodeProject\npm\someOtherDependency\package.json]
    

    就个人而言,我会用'\'字符分隔每一行,看看哪一个更接近我的根文件夹

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2013-06-28
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      • 1970-01-01
      相关资源
      最近更新 更多