Я считаю, что это в первую очередь вопрос о регулярном выражении , но я могу ошибаться.
Допустим, я хотел исключить папку в моем проекте root с именем art
.
Мое выходное регулярное выражение в CLI выглядит следующим образом:
blacklistRE: /(all|the|other|matchers|art\.*)$/
Но это приводит к ошибке:
Unable to resolve "art/core/color" from "..\..\node_modules\react-native\Libraries\ART\ReactNativeART.js"
Как исключить каталог art
верхнего уровня, не затрагивая все дочерние каталоги?
Из документов комплекта
blacklistRE Тип: RegExp
RegEx, определяющий, какие пути игнорировать. https://facebook.github.io/metro/docs/configuration/#blacklistre
Код функции, которую я вызываю: Она короткая и автономная в этом файле, если кто-либо лучше меня регулярное выражение может иметь какое-либо понимание. https://github.com/facebook/metro/blob/8c53c38932c3e396109014ac707287fbdf2500d3/packages/metro-config/src/defaults/blacklist.js#L35 -L44
Мой полный код выглядит так:
const blacklist = require('metro-config/src/defaults/blacklist');
const regexStrings = [
// DEFAULTS
'.*\\android\\ReactAndroid\\.*',
'.*\\versioned-react-native\\.*',
'node_modules[\\\\]react[\\\\]dist[\\\\].*',
'node_modules[\\\\].cache[\\\\].*',
'packages[\\\\]electron[\\\\].*',
'node_modules[\\\\]electron.*',
'website\\node_modules\\.*',
'heapCapture\\bundle.js',
'.*\\__tests__\\.*',
'.*\\.git\\.*',
// CUSTOM
'art\\.*',
]
const constructBlacklistRE = () => {
const formedRegexes = regexStrings.map(piece => new RegExp(piece));
console.warn(formedRegexes);
return blacklist([...formedRegexes]);
};
const config = {
blacklistRE: constructBlacklistRE(),
}