glob в Node.js и возвращает только совпадение (без начального пути) - PullRequest
9 голосов
/ 30 декабря 2011

Мне нужно набрать ./../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)
});

Но это немного некрасиво и, кажется, имеет расовое состояние: иногда шар появляется на oldwd. Так что это должно идти.

Я рассматриваю просто отображение на matches и удаление начального пути строковыми операциями. Так как glob возвращает совпадения с разрешенными точечными точками, я должен был бы сделать то же самое с моей строкой поиска и замены, я полагаю. Это становится достаточно грязным, поэтому мне интересно, есть ли лучший (встроенный или библиотечный?) Способ справиться с этим.

Итак, каков хороший, аккуратный и правильный способ использовать Glode в Node.js и просто получить "подходящую" часть? JavaScript и CoffeeScript оба в порядке со мной

Ответы [ 2 ]

17 голосов
/ 27 июня 2014

Перейдите в каталог к ​​опциям и позаботьтесь о глобусе.

glob.glob("**/*.txt", {cwd: '../../wherever/'}, function(err, matches) {
    ...
});
4 голосов
/ 30 декабря 2011

Попробуйте это:

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
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...