文件更改时获取目录mtime

时间:2017-08-22 18:21:17

标签: javascript node.js

我想在目录上获取mtime。我不确定这是否是正确的方法,但是当目录中的文件发生变化时,如何获得mtime

目前我正在做的事情:

let statTs = fs.statSync(cfgDir);

我稍后检查时间与另一个目录或文件的时间来决定是否需要运行构建命令:

if (!statJs || (statTs && statJs && statTs.mtime > statJs.mtime)) {
    cp.execSync(`${tscPath} -p "${configFile}"`);
}

如果我转储mtime的{​​{1}}:

statTs

即使我修改了目录中的文件,我总是得到相同的时间。有没有办法在文件更改时获得该时间?

我正在使用Windows机器,所以这可能在不同的操作系统上有所不同......

1 个答案:

答案 0 :(得分:1)

我找到的最佳解决方案是对所有文件进行全局处理并获取最新更改的时间,如下所示:

private getDirMtime(dirpath) {
    let stat = fs.statSync(dirpath)
    if(stat.isFile()){ return Promise.resolve(stat.mtime) }
    return new Promise(resolve => {
        let lastMod = new Date(1970, 0)
        glob(path.join(dirpath, '**/*.*'), files => {
            files.forEach(file => {
                let stat = fs.statSync(file)
                if(stat.isFile() && stat.mtime > lastMod) {
                    lastMod = stat.mtime
                }
            })
            return resolve(lastMod)
        })
    })
}