как заставить react native packager игнорировать определенные каталоги
Задача:
Мой проект имеет @providesModule naming collision при попытке запустить react-native run-ios из командной строки. Он конфликтует с автоматически генерируемым dir dist/, который создается другим пакетом npm, esdoc. Я хотел бы иметь возможность сохранить этот автогенерированный dir и просто заставить react native packager игнорировать dist/ dir.
Сообщение Об Ошибке:
[01/23/2017, 13:17:07] <START> Building Haste Map
Failed to build DependencyGraph: @providesModule naming collision:
Duplicate module name: ann
Paths: /Users/thurt/projects/example/package.json collides with /Users/thurt/projects/example/dist/esdoc/package.json
This error is caused by a @providesModule declaration with the same name across two different files.
Error: @providesModule naming collision:
Duplicate module name: ann
Paths: /Users/thurt/projects/example/package.json collides with /Users/thurt/projects/example/dist/esdoc/package.json
This error is caused by a @providesModule declaration with the same name across two different files.
at HasteMap._updateHasteMap (/Users/thurt/projects/example/node_modules/react-native/packager/react-packager/src/node-haste/DependencyGraph/HasteMap.js:158:13)
at p.getName.then.name (/Users/thurt/projects/example/node_modules/react-native/packager/react-packager/src/node-haste/DependencyGraph/HasteMap.js:133:31)
1 ответ:
Вы почти там в https://github.com/facebook/react-native/issues/12131
Вы можете создать файл в корне проекта под названием
rn-cli.config.jsс содержимым (для конкретной версии), как показано ниже:Ибо реагируют родные >= 0.57
const blacklist = require('metro-config/src/defaults/blacklist'); // blacklist is a function that takes an array of regexes and combines // them with the default blacklist to return a single regex. module.exports = { resolver: { blacklistRE: blacklist([/dist\/.*/]) } };Ибо реагируют родные >= 0.52,
const blacklist = require('metro').createBlacklist; module.exports = { getBlacklistRE: function() { return blacklist([/dist\/.*/]); } };Ибо Реагируют Родные >= 0.46, .
const blacklist = require('metro-bundler').createBlacklist; module.exports = { getBlacklistRE: function() { return blacklist([/dist\/.*/]); } };Для React Native .
const blacklist = require('react-native/packager/blacklist'); module.exports = { getBlacklistRE: function() { return blacklist([/dist\/.*/]); } };Все версии:
Пусть ваша команда CLI использует эту конфигурацию, передавая опцию
--config:
react-native run-ios --config=rn-cli.config.js(NB это может быть ошибка, что вам нужно передать аргумент
--config, это место, вероятно, должно быть загружено автоматически, ноnode_modules/react-native/rn-cli.config.jsимеет приоритет)Имейте в виду, что ваша папка
dist, возможно, уже была кэширована упаковщиком, и в этом случае при первом запуске вам может потребоваться сбросить кэш:
react-native start --config=rn-cli.config.js --resetCache
Comments