UNPKG

airbridge-react-native-sdk

Version:

Airbridge SDK for React Native

71 lines (63 loc) 2 kB
let path = require('path'); let fs = require('fs'); let blacklist = require('metro-config/src/defaults/exclusionList'); const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); const { exec } = require('child_process'); let blacklists = []; let dependencies = Object.keys(require('./../package.json').dependencies ?? {}); let modulesPath = path.resolve(__dirname, './../node_modules'); let modules = fs.readdirSync(modulesPath); /* for avoid duplicate issue */ /* for blacklist library's devDependencies */ let text = '.*airbridge-react-native-sdk/node_modules/('; for (let i=0; i<modules.length; i++) { if (dependencies.indexOf(modules[i]) !== -1) { continue; } text += (modules[i] + '|'); } text = text.replace(/|$/, ''); text += ')/.*'; blacklists.push(new RegExp(text)); exec(path.resolve(__dirname, './../script/BuildSource.sh')) /** * Metro configuration * https://reactnative.dev/docs/metro * * @type {import('metro-config').MetroConfig} */ const config = { server: { port: parseInt(process.env.RCT_METRO_PORT) || 9000, }, transformer: { getTransformOptions: async () => ({ transform: { experimentalImportSupport: false, inlineRequires: false } }) }, resolver: { /* for get node_module in app from library */ extraNodeModules: new Proxy( {}, { get: (target, name) => { if (target.hasOwnProperty(name)) { return target[name]; } return path.join(process.cwd(), `node_modules/${name}`); } } ), blacklistRE: blacklist(blacklists), }, projectRoot: path.resolve(__dirname), watchFolders: [ path.resolve(__dirname, './../') ] }; module.exports = mergeConfig(getDefaultConfig(__dirname), config);