文件夹名称更高我需要把所有文件夹以高于1.0.0
的名称与node.js的
搜索比X与节点
如何与下面的结构实现这一目标。
|---version
|--1.0.0
|--1.2.0
|--0.9.0
非常感谢,我对节点非常陌生。
文件夹名称更高我需要把所有文件夹以高于1.0.0
的名称与node.js的
搜索比X与节点
如何与下面的结构实现这一目标。
|---version
|--1.0.0
|--1.2.0
|--0.9.0
非常感谢,我对节点非常陌生。
如果有目录是一个有效的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
}
});
太棒了,这让我走上了正轨!谢谢 –
这是一个同步的版本:
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();
})
修正@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/');
所以..你到目前为止做了什么?没有? – ariel
为什么downvotes? omg people –