From 84ae805e78ccb82bab9b910466da9b8ad6dfc9ce Mon Sep 17 00:00:00 2001 From: Miguel Jimenez Esun Date: Tue, 29 Aug 2017 09:21:40 -0700 Subject: [PATCH] Make metro-bundler use a no-op transformer by default Summary: When starting to use `metro-bundler` as a standalone server, I found quite complicated the fact that it needs a transformer by default. Moreover, the transformer is not passed as a reference to a JS object, but as a path to a required file. I removed the need to be required, and defaulted to a dummy, basic transform, that does nothing by default. This avoids having to create an extra file and linking to it (potentially needing to involve `path` and other extra modules). Reviewed By: cpojer Differential Revision: D5622906 fbshipit-source-id: 0c2b1bec86fa542b3c05de42c89d4b5bb4384b34 --- packages/metro-bundler/src/Server/index.js | 5 +++-- packages/metro-bundler/src/defaultTransform.js | 13 +++++++++++++ packages/metro-bundler/src/defaults.js | 2 ++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 packages/metro-bundler/src/defaultTransform.js diff --git a/packages/metro-bundler/src/Server/index.js b/packages/metro-bundler/src/Server/index.js index ba942ae2..02b3fe03 100644 --- a/packages/metro-bundler/src/Server/index.js +++ b/packages/metro-bundler/src/Server/index.js @@ -91,7 +91,7 @@ export type Options = {| silent?: boolean, +sourceExts: ?Array, +transformCache: TransformCache, - +transformModulePath: string, + transformModulePath?: string, watch?: boolean, workerPath: ?string, |}; @@ -214,7 +214,8 @@ class Server { silent: options.silent || false, sourceExts: options.sourceExts || defaults.sourceExts, transformCache: options.transformCache, - transformModulePath: options.transformModulePath, + transformModulePath: + options.transformModulePath || defaults.transformModulePath, watch: options.watch || false, workerPath: options.workerPath, }; diff --git a/packages/metro-bundler/src/defaultTransform.js b/packages/metro-bundler/src/defaultTransform.js new file mode 100644 index 00000000..5ed2090f --- /dev/null +++ b/packages/metro-bundler/src/defaultTransform.js @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @flow + */ +'use strict'; + +module.exports.transform = (file: {src: string}) => ({code: file.src}); diff --git a/packages/metro-bundler/src/defaults.js b/packages/metro-bundler/src/defaults.js index 6b862d1e..eeb15f21 100644 --- a/packages/metro-bundler/src/defaults.js +++ b/packages/metro-bundler/src/defaults.js @@ -29,6 +29,8 @@ exports.providesModuleNodeModules = [ 'react-native-windows', ]; +exports.transformModulePath = require.resolve('./defaultTransform.js'); + exports.runBeforeMainModule = [ // Ensures essential globals are available and are patched correctly. 'InitializeCore',