diff --git a/fixtures/flight/server/index.js b/fixtures/flight/server/index.js index db3f8f20b9481..cd8a21f65bceb 100644 --- a/fixtures/flight/server/index.js +++ b/fixtures/flight/server/index.js @@ -1,13 +1,7 @@ 'use strict'; -const url = require('url'); - -require.extensions['.client.js'] = function(module, path) { - module.exports = { - $$typeof: Symbol.for('react.module.reference'), - name: url.pathToFileURL(path).href, - }; -}; +const register = require('react-transport-dom-webpack/node-register'); +register(); const babelRegister = require('@babel/register'); diff --git a/packages/react-transport-dom-webpack/node-register.js b/packages/react-transport-dom-webpack/node-register.js new file mode 100644 index 0000000000000..03754438bf338 --- /dev/null +++ b/packages/react-transport-dom-webpack/node-register.js @@ -0,0 +1,10 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + */ + +export * from './src/ReactFlightWebpackNodeRegister'; diff --git a/packages/react-transport-dom-webpack/npm/node-register.js b/packages/react-transport-dom-webpack/npm/node-register.js new file mode 100644 index 0000000000000..87a431afe1989 --- /dev/null +++ b/packages/react-transport-dom-webpack/npm/node-register.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('./cjs/react-transport-dom-webpack-node-register.js'); diff --git a/packages/react-transport-dom-webpack/package.json b/packages/react-transport-dom-webpack/package.json index cc28158d74725..47e421894ec3e 100644 --- a/packages/react-transport-dom-webpack/package.json +++ b/packages/react-transport-dom-webpack/package.json @@ -17,6 +17,7 @@ "server.js", "server.browser.js", "server.node.js", + "node-register.js", "cjs/", "esm/" ], @@ -27,6 +28,7 @@ "./server.browser": "./server.browser.js", "./server.node": "./server.node.js", "./node-loader": "./esm/react-transport-dom-webpack-node-loader.js", + "./node-register": "./node-register.js", "./package.json": "./package.json" }, "browser": { diff --git a/packages/react-transport-dom-webpack/src/ReactFlightWebpackNodeRegister.js b/packages/react-transport-dom-webpack/src/ReactFlightWebpackNodeRegister.js new file mode 100644 index 0000000000000..f5149be1c42c4 --- /dev/null +++ b/packages/react-transport-dom-webpack/src/ReactFlightWebpackNodeRegister.js @@ -0,0 +1,19 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + */ + +const url = require('url'); + +module.exports = function register() { + (require: any).extensions['.client.js'] = function(module, path) { + module.exports = { + $$typeof: Symbol.for('react.module.reference'), + name: url.pathToFileURL(path).href, + }; + }; +}; diff --git a/scripts/rollup/bundles.js b/scripts/rollup/bundles.js index 2c7f4a44afbd0..15bbc68d364da 100644 --- a/scripts/rollup/bundles.js +++ b/scripts/rollup/bundles.js @@ -295,6 +295,15 @@ const bundles = [ externals: [], }, + /******* React Transport DOM Webpack Node.js CommonJS Loader *******/ + { + bundleTypes: [NODE_ES2015], + moduleType: RENDERER_UTILS, + entry: 'react-transport-dom-webpack/node-register', + global: 'ReactFlightWebpackNodeRegister', + externals: ['url'], + }, + /******* React Transport DOM Server Relay *******/ { bundleTypes: [FB_WWW_DEV, FB_WWW_PROD],