From efc100587b8b9f449f0fda964c37d47f3ae3b4f1 Mon Sep 17 00:00:00 2001 From: Colum Ferry Date: Wed, 9 Nov 2022 11:20:21 +0000 Subject: [PATCH] feat(react): remove exposed utils (#13079) --- e2e/react/src/react.module-federation.test.ts | 26 ++-- packages/react/module-federation.ts | 3 +- .../module-federation.config.js__tmpl__ | 2 +- .../webpack.config.js__tmpl__ | 2 +- .../webpack.config.prod.js__tmpl__ | 2 +- .../module-federation.config.js__tmpl__ | 2 +- .../webpack.config.js__tmpl__ | 2 +- .../src/module-federation/webpack-utils.ts | 112 ------------------ 8 files changed, 19 insertions(+), 132 deletions(-) delete mode 100644 packages/react/src/module-federation/webpack-utils.ts diff --git a/e2e/react/src/react.module-federation.test.ts b/e2e/react/src/react.module-federation.test.ts index 6abda865ed768..35a67e643b1d7 100644 --- a/e2e/react/src/react.module-federation.test.ts +++ b/e2e/react/src/react.module-federation.test.ts @@ -2,13 +2,12 @@ import { stripIndents } from '@nrwl/devkit'; import { checkFilesExist, cleanupProject, - getSelectedPackageManager, killPort, newProject, readProjectConfig, runCLI, runCLIAsync, - runCommand, + runCypressTests, uniq, updateFile, } from '@nrwl/e2e/utils'; @@ -93,17 +92,18 @@ describe('React Module Federation', () => { }); ` ); - - const e2eResults = runCLI(`e2e ${shell}-e2e --no-watch --verbose`); - expect(e2eResults).toContain('All specs passed!'); - expect( - await killPorts([ - readPort(shell), - readPort(remote1), - readPort(remote2), - readPort(remote3), - ]) - ).toBeTruthy(); + if (runCypressTests()) { + const e2eResults = runCLI(`e2e ${shell}-e2e --no-watch --verbose`); + expect(e2eResults).toContain('All specs passed!'); + expect( + await killPorts([ + readPort(shell), + readPort(remote1), + readPort(remote2), + readPort(remote3), + ]) + ).toBeTruthy(); + } }, 500_000); function readPort(appName: string): number { diff --git a/packages/react/module-federation.ts b/packages/react/module-federation.ts index d406ee84e87d4..69cd3e5fd1085 100644 --- a/packages/react/module-federation.ts +++ b/packages/react/module-federation.ts @@ -1,6 +1,5 @@ import { withModuleFederation } from './src/module-federation/with-module-federation'; -export * from './src/module-federation/models'; -export * from './src/module-federation/webpack-utils'; + export { withModuleFederation }; // Support for older generated code: `const withModuleFederation = require('@nrwl/react/module-federation')` diff --git a/packages/react/src/generators/host/files/module-federation/module-federation.config.js__tmpl__ b/packages/react/src/generators/host/files/module-federation/module-federation.config.js__tmpl__ index 75fc93c742ca3..74c0e6454f789 100644 --- a/packages/react/src/generators/host/files/module-federation/module-federation.config.js__tmpl__ +++ b/packages/react/src/generators/host/files/module-federation/module-federation.config.js__tmpl__ @@ -1,7 +1,7 @@ // @ts-check /** - * @type {import('@nrwl/react/module-federation').ModuleFederationConfig} + * @type {import('@nrwl/devkit').ModuleFederationConfig} **/ const moduleFederationConfig = { name: '<%= projectName %>', diff --git a/packages/react/src/generators/host/files/module-federation/webpack.config.js__tmpl__ b/packages/react/src/generators/host/files/module-federation/webpack.config.js__tmpl__ index 13ba6e80db40b..e76b71fd0da37 100644 --- a/packages/react/src/generators/host/files/module-federation/webpack.config.js__tmpl__ +++ b/packages/react/src/generators/host/files/module-federation/webpack.config.js__tmpl__ @@ -4,7 +4,7 @@ const { withModuleFederation } = require('@nrwl/react/module-federation'); const baseConfig = require('./module-federation.config'); /** - * @type {import('@nrwl/react/module-federation').ModuleFederationConfig} + * @type {import('@nrwl/devkit').ModuleFederationConfig} **/ const defaultConfig = { ...baseConfig, diff --git a/packages/react/src/generators/host/files/module-federation/webpack.config.prod.js__tmpl__ b/packages/react/src/generators/host/files/module-federation/webpack.config.prod.js__tmpl__ index ab5b721534f46..d8f436bdfb996 100644 --- a/packages/react/src/generators/host/files/module-federation/webpack.config.prod.js__tmpl__ +++ b/packages/react/src/generators/host/files/module-federation/webpack.config.prod.js__tmpl__ @@ -4,7 +4,7 @@ const { withModuleFederation } = require('@nrwl/react/module-federation'); const baseConfig = require('./module-federation.config'); /** - * @type {import('@nrwl/react/module-federation').ModuleFederationConfig} + * @type {import('@nrwl/devkit').ModuleFederationConfig} **/ const prodConfig = { ...baseConfig, diff --git a/packages/react/src/generators/remote/files/module-federation/module-federation.config.js__tmpl__ b/packages/react/src/generators/remote/files/module-federation/module-federation.config.js__tmpl__ index d032744db1170..ce5c9e4b4858f 100644 --- a/packages/react/src/generators/remote/files/module-federation/module-federation.config.js__tmpl__ +++ b/packages/react/src/generators/remote/files/module-federation/module-federation.config.js__tmpl__ @@ -1,7 +1,7 @@ // @ts-check /** - * @type {import('@nrwl/react/module-federation').ModuleFederationConfig} + * @type {import('@nrwl/devkit').ModuleFederationConfig} **/ const moduleFederationConfig = { name: '<%= projectName %>', diff --git a/packages/react/src/generators/remote/files/module-federation/webpack.config.js__tmpl__ b/packages/react/src/generators/remote/files/module-federation/webpack.config.js__tmpl__ index 13ba6e80db40b..e76b71fd0da37 100644 --- a/packages/react/src/generators/remote/files/module-federation/webpack.config.js__tmpl__ +++ b/packages/react/src/generators/remote/files/module-federation/webpack.config.js__tmpl__ @@ -4,7 +4,7 @@ const { withModuleFederation } = require('@nrwl/react/module-federation'); const baseConfig = require('./module-federation.config'); /** - * @type {import('@nrwl/react/module-federation').ModuleFederationConfig} + * @type {import('@nrwl/devkit').ModuleFederationConfig} **/ const defaultConfig = { ...baseConfig, diff --git a/packages/react/src/module-federation/webpack-utils.ts b/packages/react/src/module-federation/webpack-utils.ts deleted file mode 100644 index acb847ff35d19..0000000000000 --- a/packages/react/src/module-federation/webpack-utils.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { existsSync } from 'fs'; -import { NormalModuleReplacementPlugin } from 'webpack'; -import { logger, workspaceRoot } from '@nrwl/devkit'; -import { dirname, join, normalize } from 'path'; -import { ParsedCommandLine } from 'typescript'; -import { - getRootTsConfigPath, - readTsConfig, -} from '@nrwl/workspace/src/utilities/typescript'; -import { SharedLibraryConfig } from './models'; -import { readRootPackageJson } from './package-json'; - -export function shareWorkspaceLibraries( - libraries: string[], - tsConfigPath = process.env.NX_TSCONFIG_PATH ?? getRootTsConfigPath() -) { - if (!existsSync(tsConfigPath)) { - throw new Error( - `NX: TsConfig Path for workspace libraries does not exist! (${tsConfigPath})` - ); - } - - const tsConfig: ParsedCommandLine = readTsConfig(tsConfigPath); - const tsconfigPathAliases = tsConfig.options?.paths; - - if (!tsconfigPathAliases) { - return { - getAliases: () => [], - getLibraries: () => ({}), - getReplacementPlugin: () => - new NormalModuleReplacementPlugin(/./, () => {}), - }; - } - - const pathMappings: { name: string; path: string }[] = []; - for (const [key, paths] of Object.entries(tsconfigPathAliases)) { - if (libraries && libraries.includes(key)) { - const pathToLib = normalize(join(workspaceRoot, paths[0])); - pathMappings.push({ - name: key, - path: pathToLib, - }); - } - } - - return { - getAliases: () => - pathMappings.reduce( - (aliases, library) => ({ ...aliases, [library.name]: library.path }), - {} - ), - getLibraries: (eager?: boolean): Record => - pathMappings.reduce( - (libraries, library) => ({ - ...libraries, - [library.name]: { requiredVersion: false, eager }, - }), - {} as Record - ), - getReplacementPlugin: () => - new NormalModuleReplacementPlugin(/./, (req) => { - if (!req.request.startsWith('.')) { - return; - } - - const from = req.context; - const to = normalize(join(req.context, req.request)); - - for (const library of pathMappings) { - const libFolder = normalize(dirname(library.path)); - if (!from.startsWith(libFolder) && to.startsWith(libFolder)) { - req.request = library.name; - } - } - }), - }; -} - -export function getNpmPackageSharedConfig( - pkgName: string, - version: string -): SharedLibraryConfig | undefined { - if (!version) { - logger.warn( - `Could not find a version for "${pkgName}" in the root "package.json" ` + - 'when collecting shared packages for the Module Federation setup. ' + - 'The package will not be shared.' - ); - - return undefined; - } - - return { singleton: true, requiredVersion: version }; -} - -export function sharePackages( - packages: string[] -): Record { - const pkgJson = readRootPackageJson(); - - return packages.reduce((shared, pkg) => { - const config = getNpmPackageSharedConfig( - pkg, - pkgJson.dependencies?.[pkg] ?? pkgJson.devDependencies?.[pkg] - ); - if (config) { - shared[pkg] = config; - } - - return shared; - }, {} as Record); -}