我最近使用节点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'))
答案 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]
就个人而言,我会用他们的' \'来打破每一行。字符,看看哪一个更接近我的根文件夹