From 5a123c986b3a9808c98c63b70ad31b8c33838e58 Mon Sep 17 00:00:00 2001 From: yinhf Date: Tue, 7 May 2019 19:49:37 +0800 Subject: [PATCH 1/3] fix: config.reporter undefined bug --- packages/cli/src/tools/loadMetroConfig.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/cli/src/tools/loadMetroConfig.js b/packages/cli/src/tools/loadMetroConfig.js index 882dccfd5..ccc3f1d56 100644 --- a/packages/cli/src/tools/loadMetroConfig.js +++ b/packages/cli/src/tools/loadMetroConfig.js @@ -82,8 +82,9 @@ export type ConfigOptionsT = {| */ export default function load(ctx: ConfigT, options?: ConfigOptionsT) { const defaultConfig = getDefaultConfig(ctx); - return loadConfig( - {cwd: ctx.root, ...options}, - {...defaultConfig, reporter: options && options.reporter}, - ); + if (options && options.reporter) { + // $FlowFixMe + defaultConfig.reporter = options.reporter; + } + return loadConfig({cwd: ctx.root, ...options}, defaultConfig); } From 35f5e52427dba9071d91eb907eb184c27788d6a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Tue, 7 May 2019 18:41:48 +0200 Subject: [PATCH 2/3] refactor --- packages/cli/src/tools/loadMetroConfig.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/cli/src/tools/loadMetroConfig.js b/packages/cli/src/tools/loadMetroConfig.js index ccc3f1d56..a05155e80 100644 --- a/packages/cli/src/tools/loadMetroConfig.js +++ b/packages/cli/src/tools/loadMetroConfig.js @@ -30,7 +30,7 @@ const getBlacklistRE = () => createBlacklist([/.*\/__fixtures__\/.*/]); * @todo(grabbou): As a separate PR, haste.platforms should be added before "native". * Otherwise, a.native.js will not load on Windows or other platforms */ -export const getDefaultConfig = (ctx: ConfigT) => { +export const getDefaultConfig = (ctx: ConfigT, options?: ConfigOptionsT) => { return { resolver: { resolverMainFields: ['react-native', 'browser', 'main'], @@ -61,6 +61,7 @@ export const getDefaultConfig = (ctx: ConfigT) => { ), }, watchFolders: getWatchFolders(), + ...(options && options.reporter ? {reporter: options.reporter} : {}), }; }; @@ -81,10 +82,6 @@ export type ConfigOptionsT = {| * This allows the CLI to always overwrite the file settings. */ export default function load(ctx: ConfigT, options?: ConfigOptionsT) { - const defaultConfig = getDefaultConfig(ctx); - if (options && options.reporter) { - // $FlowFixMe - defaultConfig.reporter = options.reporter; - } + const defaultConfig = getDefaultConfig(ctx, options); return loadConfig({cwd: ctx.root, ...options}, defaultConfig); } From e8af83e411ca9c5239cd5f4de08182c3105c4bae Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Wed, 15 May 2019 15:32:32 +0200 Subject: [PATCH 3/3] Update loadMetroConfig.js --- packages/cli/src/tools/loadMetroConfig.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/tools/loadMetroConfig.js b/packages/cli/src/tools/loadMetroConfig.js index a05155e80..08497faa0 100644 --- a/packages/cli/src/tools/loadMetroConfig.js +++ b/packages/cli/src/tools/loadMetroConfig.js @@ -30,7 +30,7 @@ const getBlacklistRE = () => createBlacklist([/.*\/__fixtures__\/.*/]); * @todo(grabbou): As a separate PR, haste.platforms should be added before "native". * Otherwise, a.native.js will not load on Windows or other platforms */ -export const getDefaultConfig = (ctx: ConfigT, options?: ConfigOptionsT) => { +export const getDefaultConfig = (ctx: ConfigT) => { return { resolver: { resolverMainFields: ['react-native', 'browser', 'main'], @@ -61,7 +61,6 @@ export const getDefaultConfig = (ctx: ConfigT, options?: ConfigOptionsT) => { ), }, watchFolders: getWatchFolders(), - ...(options && options.reporter ? {reporter: options.reporter} : {}), }; }; @@ -82,6 +81,19 @@ export type ConfigOptionsT = {| * This allows the CLI to always overwrite the file settings. */ export default function load(ctx: ConfigT, options?: ConfigOptionsT) { - const defaultConfig = getDefaultConfig(ctx, options); + const defaultConfig = getDefaultConfig(ctx); + if (options && options.reporter) { + /** + * $FlowIssue: Metro doesn't accept `reporter` to be passed along other options + * and will ignore the value, if provided. + * + * We explicitly read `reporter` value and set it on a default configuration. Note + * that all other options described in the `ConfigOptionsT` are handled by Metro + * automatically. + * + * This is a temporary workaround. + */ + defaultConfig.reporter = options.reporter; + } return loadConfig({cwd: ctx.root, ...options}, defaultConfig); }