как заставить 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)
589   1  

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

    Ничего не найдено.