Node.js中的glob并且只返回匹配(没有前导路径)

Reb*_*ebe 9 javascript glob node.js coffeescript

我需要glob ./../path/to/files/**/*.txt但不是像这样接收匹配:

./../path/to/files/subdir/file.txt

我需要剥掉根:

subdir/file.txt

目前,我有:

oldwd = process.cwd()
process.chdir(__dirname + "/../path/to/files")
glob.glob("**/*.txt", function (err, matches) {
  process.chdir(oldwd)
});
Run Code Online (Sandbox Code Playgroud)

但它有点难看,而且似乎也有竞争条件:有时候会发生在老虎身上.所以必须去.

我正在考虑matches使用字符串操作简单地映射和剥离前导路径.由于glob返回与dotdirs解决的匹配,我想我必须对我的搜索和替换字符串做同样的事情.这已经变得非常混乱,我想知道是否有更好的(内置或库?)方式来处理这个问题.

那么,什么是对的Node.js glob的和一个漂亮,整洁和正确的方式只是让"匹配"部分?JavaScript和CoffeeScript都适合我

jsk*_*ski 17

将目录传递给选项,并由glob处理所有混乱.

glob.glob("**/*.txt", {cwd: '../../wherever/'}, function(err, matches) {
    ...
});
Run Code Online (Sandbox Code Playgroud)


ick*_*fay 6

尝试这个:

var path = require('path');
var root = '/path/to/files';
glob.glob("**/*.txt", function(err, matches) {
    if(err) throw err;
    matches = matches.map(function(match) {
        return path.relative(root, match);
    });
    // use matches
});
Run Code Online (Sandbox Code Playgroud)