【问题标题】: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]
就个人而言,我会用'\'字符分隔每一行,看看哪一个更接近我的根文件夹