51 lines
1.7 KiB
JavaScript
51 lines
1.7 KiB
JavaScript
/**
|
|
* Metro configuration for React Native
|
|
* https://github.com/facebook/react-native
|
|
*
|
|
* @format
|
|
*/
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const blacklist = require('metro-config/src/defaults/blacklist');
|
|
|
|
const rnPath = fs.realpathSync(
|
|
path.resolve(require.resolve('react-native/package.json'), '..'),
|
|
);
|
|
const rnwPath = fs.realpathSync(
|
|
path.resolve(require.resolve('react-native-windows/package.json'), '..'),
|
|
);
|
|
|
|
module.exports = {
|
|
resolver: {
|
|
extraNodeModules: {
|
|
// Redirect react-native to react-native-windows
|
|
'react-native': rnwPath,
|
|
'react-native-windows': rnwPath,
|
|
},
|
|
// Include the macos platform in addition to the defaults because the fork includes macos, but doesn't declare it
|
|
platforms: ['ios', 'android', 'windesktop', 'windows', 'web', 'macos'],
|
|
// Since there are multiple copies of react-native, we need to ensure that metro only sees one of them
|
|
// This should go in RN 0.61 when haste is removed
|
|
blacklistRE: blacklist([
|
|
new RegExp(
|
|
`${(path.resolve(rnPath) + path.sep).replace(/[/\\]/g, '/')}.*`,
|
|
),
|
|
|
|
// This stops "react-native run-windows" from causing the metro server to crash if its already running
|
|
new RegExp(
|
|
`${path.resolve(__dirname, 'windows').replace(/[/\\]/g, '/')}.*`,
|
|
),
|
|
// Avoid error EBUSY: resource busy or locked, open '...\vnext\msbuild.ProjectImports.zip' when building 'vnext\Microsoft.ReactNative.sln' with '/bl'
|
|
/.*\.ProjectImports\.zip/,
|
|
]),
|
|
},
|
|
transformer: {
|
|
getTransformOptions: async () => ({
|
|
transform: {
|
|
experimentalImportSupport: false,
|
|
inlineRequires: false,
|
|
},
|
|
}),
|
|
},
|
|
};
|