Skip to content

Commit

Permalink
cleanup(angular): remove deprecated mfe apis from app
Browse files Browse the repository at this point in the history
  • Loading branch information
Coly010 committed Aug 15, 2022
1 parent 6b9f44f commit 72016bb
Show file tree
Hide file tree
Showing 14 changed files with 44 additions and 228 deletions.
30 changes: 0 additions & 30 deletions docs/generated/packages/angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -204,40 +204,10 @@
"description": "Split the project configuration into `<projectRoot>/project.json` rather than including it inside `workspace.json`.",
"type": "boolean"
},
"mf": {
"description": "Generate a Module Federation configuration for the application",
"type": "boolean",
"default": false,
"x-deprecated": "Use the `host` or `remote` generators instead. Support for generating Module Federation applications using the application generator will be removed in an upcoming version."
},
"mfType": {
"type": "string",
"enum": ["host", "remote"],
"description": "Type of application to generate the Module Federation configuration for.",
"default": "remote",
"x-deprecated": "Use the `host` or `remote` generators instead. Support for generating Module Federation applications using the application generator will be removed in an upcoming version."
},
"federationType": {
"type": "string",
"enum": ["static", "dynamic"],
"description": "Use either Static or Dynamic Module Federation pattern for the application.",
"default": "static",
"x-deprecated": "Use the `host` or `remote` generators instead. Support for generating Module Federation applications using the application generator will be removed in an upcoming version."
},
"port": {
"type": "number",
"description": "The port at which the remote application should be served."
},
"remotes": {
"type": "array",
"description": "A list of remote application names that the host application should consume.",
"x-deprecated": "Use the `host` or `remote` generators instead. Support for generating Module Federation applications using the application generator will be removed in an upcoming version."
},
"host": {
"type": "string",
"description": "The name of the host application that the remote application will be consumed by.",
"x-deprecated": "Use the `host` or `remote` generators instead. Support for generating Module Federation applications using the application generator will be removed in an upcoming version."
},
"setParserOptionsProject": {
"type": "boolean",
"description": "Whether or not to configure the ESLint `parserOptions.project` option. We do not do this by default for lint performance reasons.",
Expand Down
2 changes: 1 addition & 1 deletion e2e/angular-extensions/src/tailwind.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
} from '@nrwl/e2e/utils';

// TODO(Colum or Leosvel): Investigate and fix these tests
describe.skip('Tailwind support', () => {
describe('Tailwind support', () => {
let project: string;

const defaultButtonBgColor = 'bg-blue-700';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,5 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`app --mf should add a remote application and add it to a specified host applications webpack config that contains a remote application already 1`] = `
"const { withModuleFederation } = require('@nrwl/angular/module-federation');
const config = require('./module-federation.config');
module.exports = withModuleFederation(config);"
`;

exports[`app --mf should add a remote application and add it to a specified host applications webpack config when no other remote has been added to it 1`] = `
"const { withModuleFederation } = require('@nrwl/angular/module-federation');
const config = require('./module-federation.config');
module.exports = withModuleFederation(config);"
`;

exports[`app --mf should generate a Module Federation correctly for a each app 1`] = `
"const { withModuleFederation } = require('@nrwl/angular/module-federation');
const config = require('./module-federation.config');
module.exports = withModuleFederation(config);"
`;

exports[`app --mf should generate a Module Federation correctly for a each app 2`] = `
"const { withModuleFederation } = require('@nrwl/angular/module-federation');
const config = require('./module-federation.config');
module.exports = withModuleFederation(config);"
`;

exports[`app at the root should accept numbers in the path 1`] = `"src/9-websites/my-app"`;

exports[`app nested should update workspace.json 1`] = `
Expand Down
93 changes: 0 additions & 93 deletions packages/angular/src/generators/application/application.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -928,99 +928,6 @@ describe('app', () => {
});
});

describe('--mf', () => {
test.each(['host', 'remote'])(
'should generate a Module Federation correctly for a each app',
async (type: 'host' | 'remote') => {
await generateApp(appTree, 'my-app', { mf: true, mfType: type });

expect(appTree.exists(`apps/my-app/webpack.config.js`)).toBeTruthy();
expect(
appTree.exists(`apps/my-app/webpack.prod.config.js`)
).toBeTruthy();
expect(
appTree.read(`apps/my-app/webpack.config.js`, 'utf-8')
).toMatchSnapshot();
}
);

test.each(['host', 'remote'])(
'should update the builder to use webpack-browser',
async (type: 'host' | 'remote') => {
await generateApp(appTree, 'my-app', { mf: true, mfType: type });

const projectConfig = readProjectConfiguration(appTree, 'my-app');

expect(projectConfig.targets.build.executor).toEqual(
'@nrwl/angular:webpack-browser'
);
}
);

it('should add a remote application and add it to a specified host applications webpack config when no other remote has been added to it', async () => {
// ARRANGE
await generateApp(appTree, 'app1', {
mf: true,
mfType: 'host',
});

// ACT
await generateApp(appTree, 'remote1', {
mf: true,
mfType: 'remote',
host: 'app1',
});

// ASSERT
const hostWebpackConfig = appTree.read(
'apps/app1/webpack.config.js',
'utf-8'
);
expect(hostWebpackConfig).toMatchSnapshot();
});

it('should add a remote application and add it to a specified host applications webpack config that contains a remote application already', async () => {
// ARRANGE
await generateApp(appTree, 'app1', {
mf: true,
mfType: 'host',
});

await generateApp(appTree, 'remote1', {
mf: true,
mfType: 'remote',
host: 'app1',
port: 4201,
});

// ACT
await generateApp(appTree, 'remote2', {
mf: true,
mfType: 'remote',
host: 'app1',
port: 4202,
});

// ASSERT
const hostWebpackConfig = appTree.read(
'apps/app1/webpack.config.js',
'utf-8'
);
expect(hostWebpackConfig).toMatchSnapshot();
});

it('should add a port to a non-mf app', async () => {
// ACT
await generateApp(appTree, 'app1', {
port: 4205,
});

// ASSERT
const projectConfig = readProjectConfiguration(appTree, 'app1');
expect(projectConfig.targets.serve.options.port).toBe(4205);
});
});

describe('--add-tailwind', () => {
it('should not add a tailwind.config.js and relevant packages when "--add-tailwind" is not specified', async () => {
// ACT
Expand Down
5 changes: 0 additions & 5 deletions packages/angular/src/generators/application/application.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import { setupTailwindGenerator } from '../setup-tailwind/setup-tailwind';
import {
addE2e,
addLinting,
addMf,
addProxyConfig,
addRouterRootConfiguration,
addUnitTestRunner,
Expand Down Expand Up @@ -129,10 +128,6 @@ export async function applicationGenerator(
});
}

if (options.mf) {
await addMf(host, options);
}

if (!options.skipFormat) {
await formatFiles(host);
}
Expand Down
20 changes: 0 additions & 20 deletions packages/angular/src/generators/application/lib/add-mf.ts

This file was deleted.

1 change: 0 additions & 1 deletion packages/angular/src/generators/application/lib/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
export * from './add-e2e';
export * from './add-linting';
export * from './add-mf';
export * from './add-protractor';
export * from './add-proxy-config';
export * from './add-unit-test-runner';
Expand Down
4 changes: 0 additions & 4 deletions packages/angular/src/generators/application/schema.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,7 @@ export interface Schema {
backendProject?: string;
strict?: boolean;
standaloneConfig?: boolean;
mf?: boolean;
mfType?: 'host' | 'remote';
remotes?: string[];
port?: number;
host?: string;
setParserOptionsProject?: boolean;
skipPackageJson?: boolean;
skipPostInstall?: boolean;
Expand Down
30 changes: 0 additions & 30 deletions packages/angular/src/generators/application/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -133,40 +133,10 @@
"description": "Split the project configuration into `<projectRoot>/project.json` rather than including it inside `workspace.json`.",
"type": "boolean"
},
"mf": {
"description": "Generate a Module Federation configuration for the application",
"type": "boolean",
"default": false,
"x-deprecated": "Use the `host` or `remote` generators instead. Support for generating Module Federation applications using the application generator will be removed in an upcoming version."
},
"mfType": {
"type": "string",
"enum": ["host", "remote"],
"description": "Type of application to generate the Module Federation configuration for.",
"default": "remote",
"x-deprecated": "Use the `host` or `remote` generators instead. Support for generating Module Federation applications using the application generator will be removed in an upcoming version."
},
"federationType": {
"type": "string",
"enum": ["static", "dynamic"],
"description": "Use either Static or Dynamic Module Federation pattern for the application.",
"default": "static",
"x-deprecated": "Use the `host` or `remote` generators instead. Support for generating Module Federation applications using the application generator will be removed in an upcoming version."
},
"port": {
"type": "number",
"description": "The port at which the remote application should be served."
},
"remotes": {
"type": "array",
"description": "A list of remote application names that the host application should consume.",
"x-deprecated": "Use the `host` or `remote` generators instead. Support for generating Module Federation applications using the application generator will be removed in an upcoming version."
},
"host": {
"type": "string",
"description": "The name of the host application that the remote application will be consumed by.",
"x-deprecated": "Use the `host` or `remote` generators instead. Support for generating Module Federation applications using the application generator will be removed in an upcoming version."
},
"setParserOptionsProject": {
"type": "boolean",
"description": "Whether or not to configure the ESLint `parserOptions.project` option. We do not do this by default for lint performance reasons.",
Expand Down
7 changes: 1 addition & 6 deletions packages/angular/src/generators/host/host.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing';
import host from './host';
import applicationGenerator from '../application/application';
import remote from '../remote/remote';

describe('Host App Generator', () => {
Expand All @@ -21,12 +20,8 @@ describe('Host App Generator', () => {
// ARRANGE
const tree = createTreeWithEmptyWorkspace();

await applicationGenerator(tree, {
await remote(tree, {
name: 'remote',
mf: true,
mfType: 'remote',
routing: true,
port: 4201,
});

// ACT
Expand Down
17 changes: 15 additions & 2 deletions packages/angular/src/generators/host/host.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import remoteGenerator from '../remote/remote';
import { normalizeProjectName } from '../utils/project';
import * as ts from 'typescript';
import { addRoute } from '../../utils/nx-devkit/ast-utils';
import setupMf from '../setup-mf/setup-mf';

export default async function host(tree: Tree, options: Schema) {
const projects = getProjects(tree);
Expand All @@ -29,17 +30,29 @@ export default async function host(tree: Tree, options: Schema) {
});
}

const appName = normalizeProjectName(options.name, options.directory);

const installTask = await applicationGenerator(tree, {
...options,
mf: true,
port: 4200,
skipFormat: true,
});

await setupMf(tree, {
appName,
mfType: 'host',
routing: true,
remotes: remotesToIntegrate ?? [],
port: 4200,
remotes: remotesToIntegrate ?? [],
federationType: options.dynamic ? 'dynamic' : 'static',
skipPackageJson: options.skipPackageJson,
skipFormat: true,
});

if (!options.skipFormat) {
await formatFiles(tree);
}

for (const remote of remotesToGenerate) {
await remoteGenerator(tree, {
...options,
Expand Down
10 changes: 3 additions & 7 deletions packages/angular/src/generators/remote/remote.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ import {
readWorkspaceConfiguration,
} from '@nrwl/devkit';
import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing';
import applicationGenerator from '../application/application';

import remote from './remote';
import host from '../host/host';

describe('MF Remote App Generator', () => {
it('should generate a remote mf app with no host', async () => {
Expand All @@ -25,18 +26,14 @@ describe('MF Remote App Generator', () => {
// ARRANGE
const tree = createTreeWithEmptyWorkspace();

await applicationGenerator(tree, {
await host(tree, {
name: 'host',
mf: true,
mfType: 'host',
routing: true,
});

// ACT
await remote(tree, {
name: 'test',
host: 'host',
port: 4201,
});

// ASSERT
Expand All @@ -53,7 +50,6 @@ describe('MF Remote App Generator', () => {
await remote(tree, {
name: 'test',
host: 'host',
port: 4201,
});
} catch (error) {
// ASSERT
Expand Down
Loading

0 comments on commit 72016bb

Please sign in to comment.