mirror of https://github.com/status-im/metro.git
Branding: "packager" -> "Metro Bundler"
Summary: This diff renames all the stragglers in comments and strings from variations of "packager" to "Metro Bundler". I did one of three: * Rename "packager" to "Metro Bundler" * Rename "react-native-packager" to "Metro Bundler" * Remove "packager" when code inside of Metro implies that it's about Metro I also removed `Glossary.md` because it is unmaintained and very old. mjesun is currently starting to write documentation for Metro which will supersede whatever was there before. Reviewed By: mjesun Differential Revision: D5802993 fbshipit-source-id: ba99cb5ed04d84b0f7b7a8a0bf28ed99280a940a
This commit is contained in:
parent
467fa563fe
commit
86a943bbcd
|
@ -1,22 +0,0 @@
|
||||||
Glossary
|
|
||||||
===
|
|
||||||
|
|
||||||
Terminology commonly used in React Native Packager / Metro Bundler is explained
|
|
||||||
here. This document is work in progress, please help completing it.
|
|
||||||
|
|
||||||
## Build Root
|
|
||||||
|
|
||||||
Configuration files (`rn-cli.config.js`) support configuring one or more roots
|
|
||||||
that are watched for file changes during development. In the context of the
|
|
||||||
integration with the `js_*` rule family in [Buck][], there is only a single root,
|
|
||||||
the build root used by Buck.
|
|
||||||
|
|
||||||
|
|
||||||
## Local Path
|
|
||||||
|
|
||||||
A *local path* / `localPath` is the path to a file relative to a
|
|
||||||
[*build root*](#build-root).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[Buck]: http://buckbuild.com/
|
|
|
@ -176,7 +176,7 @@ class Bundler {
|
||||||
});
|
});
|
||||||
|
|
||||||
const cacheKeyParts = [
|
const cacheKeyParts = [
|
||||||
'react-packager-cache',
|
'metro-bundler-cache',
|
||||||
VERSION,
|
VERSION,
|
||||||
opts.cacheVersion,
|
opts.cacheVersion,
|
||||||
stableProjectRoots.join(',').split(pathSeparator).join('-'),
|
stableProjectRoots.join(',').split(pathSeparator).join('-'),
|
||||||
|
|
|
@ -33,7 +33,7 @@ describe('Logger', () => {
|
||||||
expect(logEntry).toEqual({
|
expect(logEntry).toEqual({
|
||||||
log_entry_label: 'Test',
|
log_entry_label: 'Test',
|
||||||
log_session: jasmine.any(String),
|
log_session: jasmine.any(String),
|
||||||
packager_version: jasmine.any(String),
|
metro_bundler_version: jasmine.any(String),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ describe('Logger', () => {
|
||||||
action_phase: 'start',
|
action_phase: 'start',
|
||||||
log_entry_label: 'Test',
|
log_entry_label: 'Test',
|
||||||
log_session: jasmine.any(String),
|
log_session: jasmine.any(String),
|
||||||
packager_version: jasmine.any(String),
|
metro_bundler_version: jasmine.any(String),
|
||||||
start_timestamp: jasmine.any(Object),
|
start_timestamp: jasmine.any(Object),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -57,7 +57,7 @@ describe('Logger', () => {
|
||||||
duration_ms: jasmine.any(Number),
|
duration_ms: jasmine.any(Number),
|
||||||
log_entry_label: 'Test',
|
log_entry_label: 'Test',
|
||||||
log_session: jasmine.any(String),
|
log_session: jasmine.any(String),
|
||||||
packager_version: jasmine.any(String),
|
metro_bundler_version: jasmine.any(String),
|
||||||
start_timestamp: jasmine.any(Object),
|
start_timestamp: jasmine.any(Object),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -36,7 +36,7 @@ function createEntry(data: LogEntry | string): LogEntry {
|
||||||
return {
|
return {
|
||||||
...logEntry,
|
...logEntry,
|
||||||
log_session,
|
log_session,
|
||||||
packager_version: VERSION,
|
metro_bundler_version: VERSION,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -173,8 +173,8 @@ function loadModuleImplementation(moduleId, module) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// keep args in sync with with defineModuleCode in
|
// keep args in sync with with defineModuleCode in
|
||||||
// packager/src//Resolver/index.js
|
// metro-bundler/src/Resolver/index.js
|
||||||
// and packager/src//ModuleGraph/worker.js
|
// and metro-bundler/src/ModuleGraph/worker.js
|
||||||
factory(global, require, moduleObject, exports, dependencyMap);
|
factory(global, require, moduleObject, exports, dependencyMap);
|
||||||
|
|
||||||
// avoid removing factory in DEV mode as it breaks HMR
|
// avoid removing factory in DEV mode as it breaks HMR
|
||||||
|
@ -202,8 +202,8 @@ function unknownModuleError(id) {
|
||||||
let message = 'Requiring unknown module "' + id + '".';
|
let message = 'Requiring unknown module "' + id + '".';
|
||||||
if (__DEV__) {
|
if (__DEV__) {
|
||||||
message +=
|
message +=
|
||||||
'If you are sure the module is there, try restarting the packager. ' +
|
'If you are sure the module is there, try restarting Metro Bundler. ' +
|
||||||
'You may also want to run `npm install`, or `yarn` (depending on your environment).';
|
'You may also want to run `yarn`, or `npm install` (depending on your environment).';
|
||||||
}
|
}
|
||||||
return Error(message);
|
return Error(message);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1146,7 +1146,7 @@ class Server {
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
type: 'InternalError',
|
type: 'InternalError',
|
||||||
message:
|
message:
|
||||||
'react-packager has encountered an internal error, ' +
|
'Metro Bundler has encountered an internal error, ' +
|
||||||
'please check your terminal error output for more details',
|
'please check your terminal error output for more details',
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
|
@ -30,7 +30,7 @@ function escapeRegExp(pattern) {
|
||||||
// convert the '/' into an escaped local file separator
|
// convert the '/' into an escaped local file separator
|
||||||
return escaped.replace(/\//g, '\\' + path.sep);
|
return escaped.replace(/\//g, '\\' + path.sep);
|
||||||
} else {
|
} else {
|
||||||
throw new Error('Unexpected packager blacklist pattern: ' + pattern);
|
throw new Error('Unexpected blacklist pattern: ' + pattern);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,7 @@ exports.getOrderedDependencyPaths = function(options: Options, depOptions: {
|
||||||
};
|
};
|
||||||
|
|
||||||
function enableDebug() {
|
function enableDebug() {
|
||||||
// react-packager logs debug messages using the 'debug' npm package, and uses
|
// Metro Bundler logs debug messages using the 'debug' npm package, and uses
|
||||||
// the following prefix throughout.
|
// the following prefix throughout.
|
||||||
// To enable debugging, we need to set our pattern or append it to any
|
// To enable debugging, we need to set our pattern or append it to any
|
||||||
// existing pre-configured pattern to avoid disabling logging for
|
// existing pre-configured pattern to avoid disabling logging for
|
||||||
|
|
|
@ -138,7 +138,7 @@ function loadModuleImplementation(moduleId, module) {
|
||||||
function unknownModuleError(id) {
|
function unknownModuleError(id) {
|
||||||
var message = 'Requiring unknown module \\"' + id + '\\".';
|
var message = 'Requiring unknown module \\"' + id + '\\".';
|
||||||
if (__DEV__) {
|
if (__DEV__) {
|
||||||
message += 'If you are sure the module is there, try restarting the packager. ' + 'You may also want to run \`npm install\`, or \`yarn\` (depending on your environment).';
|
message += 'If you are sure the module is there, try restarting Metro Bundler. ' + 'You may also want to run \`yarn\`, or \`npm install\` (depending on your environment).';
|
||||||
}
|
}
|
||||||
return Error(message);
|
return Error(message);
|
||||||
}
|
}
|
||||||
|
@ -411,7 +411,7 @@ function loadModuleImplementation(moduleId, module) {
|
||||||
function unknownModuleError(id) {
|
function unknownModuleError(id) {
|
||||||
var message = 'Requiring unknown module \\"' + id + '\\".';
|
var message = 'Requiring unknown module \\"' + id + '\\".';
|
||||||
if (__DEV__) {
|
if (__DEV__) {
|
||||||
message += 'If you are sure the module is there, try restarting the packager. ' + 'You may also want to run \`npm install\`, or \`yarn\` (depending on your environment).';
|
message += 'If you are sure the module is there, try restarting Metro Bundler. ' + 'You may also want to run \`yarn\`, or \`npm install\` (depending on your environment).';
|
||||||
}
|
}
|
||||||
return Error(message);
|
return Error(message);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
jest.useRealTimers().unmock('fs').unmock('graceful-fs');
|
jest.useRealTimers().unmock('fs').unmock('graceful-fs');
|
||||||
|
|
||||||
const Packager = require('../..');
|
const Metro = require('../..');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
|
||||||
jasmine.DEFAULT_TIMEOUT_INTERVAL = 30 * 1000;
|
jasmine.DEFAULT_TIMEOUT_INTERVAL = 30 * 1000;
|
||||||
|
@ -93,12 +93,12 @@ describe('basic_bundle', () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
it('bundles package with polyfills', async () => {
|
it('bundles package with polyfills', async () => {
|
||||||
const bundleWithPolyfills = await Packager.buildBundle(
|
const bundleWithPolyfills = await Metro.buildBundle(
|
||||||
{
|
{
|
||||||
assetRegistryPath: ASSET_REGISTRY_PATH,
|
assetRegistryPath: ASSET_REGISTRY_PATH,
|
||||||
getPolyfills: () => [polyfill1, polyfill2],
|
getPolyfills: () => [polyfill1, polyfill2],
|
||||||
projectRoots: [INPUT_PATH, POLYFILLS_PATH],
|
projectRoots: [INPUT_PATH, POLYFILLS_PATH],
|
||||||
transformCache: Packager.TransformCaching.none(),
|
transformCache: Metro.TransformCaching.none(),
|
||||||
transformModulePath: require.resolve('../../transformer'),
|
transformModulePath: require.resolve('../../transformer'),
|
||||||
nonPersistent: true,
|
nonPersistent: true,
|
||||||
},
|
},
|
||||||
|
@ -112,12 +112,12 @@ describe('basic_bundle', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('bundles package without polyfills', async () => {
|
it('bundles package without polyfills', async () => {
|
||||||
const bundleWithoutPolyfills = await Packager.buildBundle(
|
const bundleWithoutPolyfills = await Metro.buildBundle(
|
||||||
{
|
{
|
||||||
assetRegistryPath: ASSET_REGISTRY_PATH,
|
assetRegistryPath: ASSET_REGISTRY_PATH,
|
||||||
getPolyfills: () => [],
|
getPolyfills: () => [],
|
||||||
projectRoots: [INPUT_PATH, POLYFILLS_PATH],
|
projectRoots: [INPUT_PATH, POLYFILLS_PATH],
|
||||||
transformCache: Packager.TransformCaching.none(),
|
transformCache: Metro.TransformCaching.none(),
|
||||||
transformModulePath: require.resolve('../../transformer'),
|
transformModulePath: require.resolve('../../transformer'),
|
||||||
nonPersistent: true,
|
nonPersistent: true,
|
||||||
},
|
},
|
||||||
|
|
|
@ -163,15 +163,15 @@ class TerminalReporter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_logPackagerInitializing(port: number, projectRoots: $ReadOnlyArray<string>) {
|
_logInitializing(port: number, projectRoots: $ReadOnlyArray<string>) {
|
||||||
this.terminal.log(
|
this.terminal.log(
|
||||||
formatBanner(
|
formatBanner(
|
||||||
'Running packager on port ' +
|
'Running Metro Bundler on port ' +
|
||||||
port +
|
port +
|
||||||
'.\n\n' +
|
'.\n\n' +
|
||||||
'Keep this packager running while developing on any JS projects. ' +
|
'Keep Metro Bundler running while developing on any JS projects. ' +
|
||||||
'Feel free to close this tab and run your own packager instance ' +
|
'Feel free to close this tab and run your own Metro Bundler ' +
|
||||||
'if you prefer.\n\n' +
|
' instance if you prefer.\n\n' +
|
||||||
'https://github.com/facebook/react-native',
|
'https://github.com/facebook/react-native',
|
||||||
{
|
{
|
||||||
marginLeft: 1,
|
marginLeft: 1,
|
||||||
|
@ -188,11 +188,11 @@ class TerminalReporter {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
_logPackagerInitializingFailed(port: number, error: Error) {
|
_logInitializingFailed(port: number, error: Error) {
|
||||||
if (error.code === 'EADDRINUSE') {
|
if (error.code === 'EADDRINUSE') {
|
||||||
this.terminal.log(
|
this.terminal.log(
|
||||||
chalk.bgRed.bold(' ERROR '),
|
chalk.bgRed.bold(' ERROR '),
|
||||||
chalk.red("Packager can't listen on port", chalk.bold(port)),
|
chalk.red('Metro Bundler can\'t listen on port', chalk.bold(port)),
|
||||||
);
|
);
|
||||||
this.terminal.log(
|
this.terminal.log(
|
||||||
'Most likely another process is already using this port',
|
'Most likely another process is already using this port',
|
||||||
|
@ -201,7 +201,7 @@ class TerminalReporter {
|
||||||
this.terminal.log('\n ', chalk.bold('lsof -i :' + port), '\n');
|
this.terminal.log('\n ', chalk.bold('lsof -i :' + port), '\n');
|
||||||
this.terminal.log('Then, you can either shut down the other process:');
|
this.terminal.log('Then, you can either shut down the other process:');
|
||||||
this.terminal.log('\n ', chalk.bold('kill -9 <PID>'), '\n');
|
this.terminal.log('\n ', chalk.bold('kill -9 <PID>'), '\n');
|
||||||
this.terminal.log('or run packager on different port.');
|
this.terminal.log('or run Metro Bundler on different port.');
|
||||||
} else {
|
} else {
|
||||||
this.terminal.log(chalk.bgRed.bold(' ERROR '), chalk.red(error.message));
|
this.terminal.log(chalk.bgRed.bold(' ERROR '), chalk.red(error.message));
|
||||||
const errorAttributes = JSON.stringify(error);
|
const errorAttributes = JSON.stringify(error);
|
||||||
|
@ -218,14 +218,14 @@ class TerminalReporter {
|
||||||
*/
|
*/
|
||||||
_log(event: TerminalReportableEvent): void {
|
_log(event: TerminalReportableEvent): void {
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
case 'initialize_packager_started':
|
case 'initialize_started':
|
||||||
this._logPackagerInitializing(event.port, event.projectRoots);
|
this._logInitializing(event.port, event.projectRoots);
|
||||||
break;
|
break;
|
||||||
case 'initialize_packager_done':
|
case 'initialize_done':
|
||||||
this.terminal.log('\nReact packager ready.\n');
|
this.terminal.log('\nMetro Bundler ready.\n');
|
||||||
break;
|
break;
|
||||||
case 'initialize_packager_failed':
|
case 'initialize_failed':
|
||||||
this._logPackagerInitializingFailed(event.port, event.error);
|
this._logInitializingFailed(event.port, event.error);
|
||||||
break;
|
break;
|
||||||
case 'bundle_build_done':
|
case 'bundle_build_done':
|
||||||
this._logBundleBuildDone(event.buildID);
|
this._logBundleBuildDone(event.buildID);
|
||||||
|
|
|
@ -90,7 +90,7 @@ class FileBasedCache {
|
||||||
/**
|
/**
|
||||||
* The root path is where the data will be stored. It shouldn't contain
|
* The root path is where the data will be stored. It shouldn't contain
|
||||||
* other files other than the cache's own files, so it should start empty
|
* other files other than the cache's own files, so it should start empty
|
||||||
* when the packager is first run. When doing a cache reset, it may be
|
* when Metro Bundler is first run. When doing a cache reset, it may be
|
||||||
* completely deleted.
|
* completely deleted.
|
||||||
*/
|
*/
|
||||||
constructor(rootPath: string) {
|
constructor(rootPath: string) {
|
||||||
|
@ -259,7 +259,7 @@ class FileBasedCache {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When restarting packager we want to avoid running the collection over
|
* When restarting Metro Bundler we want to avoid running the collection over
|
||||||
* again, so we store the last collection time in a file and we check that
|
* again, so we store the last collection time in a file and we check that
|
||||||
* first.
|
* first.
|
||||||
*/
|
*/
|
||||||
|
@ -426,9 +426,9 @@ function none(): TransformCache {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If packager is running for two different directories, we don't want the
|
* If Metro Bundler is running for two different directories, we don't want the
|
||||||
* caches to conflict with each other. `__dirname` carries that because
|
* caches to conflict with each other. `__dirname` carries that because
|
||||||
* packager will be, for example, installed in a different `node_modules/`
|
* Metro Bundler will be, for example, installed in a different `node_modules/`
|
||||||
* folder for different projects.
|
* folder for different projects.
|
||||||
*/
|
*/
|
||||||
function useTempDir(): TransformCache {
|
function useTempDir(): TransformCache {
|
||||||
|
@ -437,7 +437,7 @@ function useTempDir(): TransformCache {
|
||||||
hash.update(process.getuid().toString());
|
hash.update(process.getuid().toString());
|
||||||
}
|
}
|
||||||
const tmpDir = tmpdir();
|
const tmpDir = tmpdir();
|
||||||
const cacheName = 'react-native-packager-cache';
|
const cacheName = 'metro-bundler-cache';
|
||||||
const rootPath = path.join(tmpDir, cacheName + '-' + hash.digest('hex'));
|
const rootPath = path.join(tmpDir, cacheName + '-' + hash.digest('hex'));
|
||||||
mkdirp.sync(rootPath);
|
mkdirp.sync(rootPath);
|
||||||
return new FileBasedCache(rootPath);
|
return new FileBasedCache(rootPath);
|
||||||
|
|
|
@ -28,13 +28,13 @@ export type ReportableEvent =
|
||||||
| {
|
| {
|
||||||
port: number,
|
port: number,
|
||||||
projectRoots: $ReadOnlyArray<string>,
|
projectRoots: $ReadOnlyArray<string>,
|
||||||
type: 'initialize_packager_started',
|
type: 'initialize_started',
|
||||||
}
|
}
|
||||||
| {
|
| {
|
||||||
type: 'initialize_packager_done',
|
type: 'initialize_done',
|
||||||
}
|
}
|
||||||
| {
|
| {
|
||||||
type: 'initialize_packager_failed',
|
type: 'initialize_failed',
|
||||||
port: number,
|
port: number,
|
||||||
error: Error,
|
error: Error,
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,7 @@ export type Reporter = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A standard way to log a warning to the terminal. This should not be called
|
* A standard way to log a warning to the terminal. This should not be called
|
||||||
* from some arbitrary packager logic, only from the reporters. Instead of
|
* from some arbitrary Metro Bundler logic, only from the reporters. Instead of
|
||||||
* calling this, add a new type of ReportableEvent instead, and implement a
|
* calling this, add a new type of ReportableEvent instead, and implement a
|
||||||
* proper handler in the reporter(s).
|
* proper handler in the reporter(s).
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -111,7 +111,7 @@ class DependencyGraph extends EventEmitter {
|
||||||
ignorePattern: opts.ignoreFilePath,
|
ignorePattern: opts.ignoreFilePath,
|
||||||
maxWorkers: opts.maxWorkers,
|
maxWorkers: opts.maxWorkers,
|
||||||
mocksPattern: '',
|
mocksPattern: '',
|
||||||
name: 'react-native-packager-' + JEST_HASTE_MAP_CACHE_BREAKER,
|
name: 'metro-bundler-' + JEST_HASTE_MAP_CACHE_BREAKER,
|
||||||
platforms: Array.from(opts.platforms),
|
platforms: Array.from(opts.platforms),
|
||||||
providesModuleNodeModules: opts.providesModuleNodeModules,
|
providesModuleNodeModules: opts.providesModuleNodeModules,
|
||||||
resetCache: opts.resetCache,
|
resetCache: opts.resetCache,
|
||||||
|
@ -123,13 +123,12 @@ class DependencyGraph extends EventEmitter {
|
||||||
}
|
}
|
||||||
|
|
||||||
static async load(opts: Options): Promise<DependencyGraph> {
|
static async load(opts: Options): Promise<DependencyGraph> {
|
||||||
const initializingPackagerLogEntry = log(
|
|
||||||
createActionStartEntry('Initializing Packager'),
|
|
||||||
);
|
|
||||||
opts.reporter.update({type: 'dep_graph_loading'});
|
opts.reporter.update({type: 'dep_graph_loading'});
|
||||||
const haste = DependencyGraph._createHaste(opts);
|
const haste = DependencyGraph._createHaste(opts);
|
||||||
const {hasteFS, moduleMap} = await haste.build();
|
const {hasteFS, moduleMap} = await haste.build();
|
||||||
log(createActionEndEntry(initializingPackagerLogEntry));
|
log(createActionEndEntry(log(
|
||||||
|
createActionStartEntry('Initializing Metro Bundler'),
|
||||||
|
)));
|
||||||
opts.reporter.update({type: 'dep_graph_loaded'});
|
opts.reporter.update({type: 'dep_graph_loaded'});
|
||||||
return new DependencyGraph({
|
return new DependencyGraph({
|
||||||
haste,
|
haste,
|
||||||
|
|
|
@ -301,7 +301,7 @@ class ModuleResolver<TModule: Moduleish, TPackage: Packageish> {
|
||||||
`To resolve try the following:\n` +
|
`To resolve try the following:\n` +
|
||||||
` 1. Clear watchman watches: \`watchman watch-del-all\`.\n` +
|
` 1. Clear watchman watches: \`watchman watch-del-all\`.\n` +
|
||||||
` 2. Delete the \`node_modules\` folder: \`rm -rf node_modules && npm install\`.\n` +
|
` 2. Delete the \`node_modules\` folder: \`rm -rf node_modules && npm install\`.\n` +
|
||||||
' 3. Reset packager cache: `rm -fr $TMPDIR/react-*` or `npm start -- --reset-cache`.',
|
' 3. Reset Metro Bundler cache: `rm -fr $TMPDIR/react-*` or `npm start -- --reset-cache`.',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,11 +32,11 @@ module.exports = {
|
||||||
|
|
||||||
_getRoots() {
|
_getRoots() {
|
||||||
// match on either path separator
|
// match on either path separator
|
||||||
if (__dirname.match(/node_modules[\/\\]react-native[\/\\]packager$/)) {
|
if (__dirname.match(/node_modules[\/\\]metro-bundler$/)) {
|
||||||
// packager is running from node_modules of another project
|
// Metro Bundler is running from node_modules of another project
|
||||||
return [path.resolve(__dirname, '../../..')];
|
return [path.resolve(__dirname, '../../..')];
|
||||||
} else if (__dirname.match(/Pods\/React\/packager$/)) {
|
} else if (__dirname.match(/Pods\/React\/packager$/)) {
|
||||||
// packager is running from node_modules of another project
|
// Metro Bundler is running from node_modules of another project
|
||||||
return [path.resolve(__dirname, '../../..')];
|
return [path.resolve(__dirname, '../../..')];
|
||||||
} else {
|
} else {
|
||||||
return [path.resolve(__dirname, '..')];
|
return [path.resolve(__dirname, '..')];
|
||||||
|
|
Loading…
Reference in New Issue