From d950ea254b0fd5ec006e8a161e9f773bb6171933 Mon Sep 17 00:00:00 2001 From: Salakar Date: Wed, 13 Feb 2019 23:27:15 +0000 Subject: [PATCH] [tests] temporarily hard code RN default metro config until exposed from new CLI --- tests/metro.config.js | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/tests/metro.config.js b/tests/metro.config.js index 5ad5ca98..0894e667 100755 --- a/tests/metro.config.js +++ b/tests/metro.config.js @@ -20,23 +20,29 @@ const { resolve, join } = require('path'); const { readdirSync, statSync } = require('fs'); const { createBlacklist } = require('metro'); -const { mergeConfig } = require('metro-config'); -const { DEFAULT } = require('react-native/local-cli/util/Config'); +// const { mergeConfig } = require('metro-config'); +const findPlugins = require('@react-native-community/cli/build/core/findPlugins').default; const rootDir = resolve(__dirname, '..'); const packagesDir = resolve(rootDir, 'packages'); +const reactNativePath = resolve(__dirname, './node_modules/react-native'); const isDirectory = source => statSync(source).isDirectory(); const firebaseModules = readdirSync(packagesDir) .map(name => join(packagesDir, name)) .filter(isDirectory); -// .map(path => path.slice(path.lastIndexOf('/') + 1)); + +const plugins = findPlugins(__dirname); const config = { projectRoot: __dirname, resolver: { - resolverMainFields: ['browser', 'main'], + platforms: ['ios', 'android', 'native'], + resolverMainFields: ['react-native', 'browser', 'main'], + providesModuleNodeModules: ['react-native', ...plugins.haste.providesModuleNodeModules], + hasteImplModulePath: join(reactNativePath, 'jest/hasteImpl'), blackListRE: createBlacklist([ + /.*\/__fixtures__\/.*/, new RegExp(`^${escape(resolve(rootDir, 'docs'))}\\/.*$`), new RegExp(`^${escape(resolve(rootDir, 'tests/ios'))}\\/.*$`), new RegExp(`^${escape(resolve(rootDir, 'tests/e2e'))}\\/.*$`), @@ -47,7 +53,8 @@ const config = { {}, { get: (target, name) => { - if (name.startsWith('@react-native-firebase')) { + if (typeof name !== 'string') return target[name]; + if (name && name.startsWith && name.startsWith('@react-native-firebase')) { const packageName = name.replace('@react-native-firebase/', ''); return join(__dirname, `../packages/${packageName}`); } @@ -55,9 +62,19 @@ const config = { }, }, ), - platforms: ['android', 'ios'], + }, + serializer: { + getModulesRunBeforeMainModule: () => [require.resolve(join(reactNativePath, 'Libraries/Core/InitializeCore'))], + getPolyfills: () => require(join(reactNativePath, 'rn-get-polyfills'))(), + }, + server: { + port: process.env.RCT_METRO_PORT || 8081, + }, + transformer: { + babelTransformerPath: require.resolve('metro-react-native-babel-transformer'), + assetRegistryPath: join(reactNativePath, 'Libraries/Image/AssetRegistry'), }, watchFolders: [resolve(__dirname, '.'), ...firebaseModules], }; - -module.exports = mergeConfig(DEFAULT, config); +// module.exports = mergeConfig(DEFAULT, config); +module.exports = config;