我需要使用node.js获取名称高于1.0.0
的所有文件夹
我如何通过以下结构实现这一目标。
|---version
|--1.0.0
|--1.2.0
|--0.9.0
谢谢,我对节点很新。
答案 0 :(得分:2)
如果目录的名称是有效的semver字符串(与您的一样),最简单的方法是使用semver模块并使用gt
函数。像这样:
var greater = function (dir, cb){
var max = null;
fs.readdir (dir, function (error, entries){
if (error) return cb (error);
if (!entries.length) return cb ();
entries.forEach (function (entry){
//Suppose there're no files in the directory
if (!max) return max = entry;
if (semver.gt (entry, max)) max = entry;
});
cb (null, max)
});
};
greater ("dir", function (error, dir){
if (error) return handleError (error);
if (dir){
//dir is the greater
}else{
//No directories
}
});
答案 1 :(得分:0)
这是同步版本:
var fs = require('fs');
var regex = /^[1-9]\.\d\.\d/;
var folder = __dirname + "/version/";
var files = fs.readdirSync(folder).filter(function(file){
return regex.test(file) &&
fs.statSync(folder + file).isDirectory();
})
答案 2 :(得分:0)
修改@Gabriels动态答案以适应。
结束需要一个同步解决方案,在我的grunt init之前插入。 这是最终代码,查找并返回最新文件夹版本的名称。
var getLatest = function (cwd) {
var max = false;
var dirs = fs.readdirSync(cwd);
if (!dirs.length) {
//No directories
} else {
dirs.forEach(function (dir) {
if (!max) {
return max = dir;
}
if (semver.gt(dir, max)) {
max = dir;
}
});
}
return max;
};
getLatest('build/');