fix(angular): do not wrap bootstrap call when setting up ssr in workspaces with angular >= 15.2.0 (#16714)
This commit is contained in:
parent
68c262d933
commit
ae89df9482
@ -22,21 +22,7 @@ export class AppModule {}
|
|||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`Host App Generator --ssr should generate the correct files 2`] = `
|
exports[`Host App Generator --ssr should generate the correct files 2`] = `
|
||||||
"import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
"import('./bootstrap').catch((err) => console.error(err));
|
||||||
|
|
||||||
import { AppModule } from './app/app.module';
|
|
||||||
|
|
||||||
function bootstrap() {
|
|
||||||
platformBrowserDynamic()
|
|
||||||
.bootstrapModule(AppModule)
|
|
||||||
.catch((err) => console.error(err));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (document.readyState !== 'loading') {
|
|
||||||
bootstrap();
|
|
||||||
} else {
|
|
||||||
document.addEventListener('DOMContentLoaded', bootstrap);
|
|
||||||
}
|
|
||||||
"
|
"
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
|||||||
@ -1,16 +0,0 @@
|
|||||||
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
||||||
|
|
||||||
import { AppModule } from './app/app.module';
|
|
||||||
|
|
||||||
function bootstrap() {
|
|
||||||
platformBrowserDynamic()
|
|
||||||
.bootstrapModule(AppModule)
|
|
||||||
.catch((err) => console.error(err));
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
if (document.readyState !== 'loading') {
|
|
||||||
bootstrap();
|
|
||||||
} else {
|
|
||||||
document.addEventListener('DOMContentLoaded', bootstrap);
|
|
||||||
}
|
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
||||||
|
import { AppModule } from './app/app.module';
|
||||||
|
|
||||||
|
function bootstrap() {
|
||||||
|
platformBrowserDynamic()
|
||||||
|
.bootstrapModule(AppModule)
|
||||||
|
.catch((err) => console.error(err));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.readyState !== 'loading') {
|
||||||
|
bootstrap();
|
||||||
|
} else {
|
||||||
|
document.addEventListener('DOMContentLoaded', bootstrap);
|
||||||
|
}
|
||||||
@ -4,8 +4,12 @@ import {
|
|||||||
joinPathFragments,
|
joinPathFragments,
|
||||||
readProjectConfiguration,
|
readProjectConfiguration,
|
||||||
} from '@nx/devkit';
|
} from '@nx/devkit';
|
||||||
import { getInstalledAngularMajorVersion } from '../../utils/version-utils';
|
import {
|
||||||
|
getInstalledAngularMajorVersion,
|
||||||
|
getInstalledAngularVersionInfo,
|
||||||
|
} from '../../utils/version-utils';
|
||||||
import type { Schema } from '../schema';
|
import type { Schema } from '../schema';
|
||||||
|
import { lt } from 'semver';
|
||||||
|
|
||||||
export function generateSSRFiles(tree: Tree, schema: Schema) {
|
export function generateSSRFiles(tree: Tree, schema: Schema) {
|
||||||
const projectRoot = readProjectConfiguration(tree, schema.project).root;
|
const projectRoot = readProjectConfiguration(tree, schema.project).root;
|
||||||
@ -17,7 +21,8 @@ export function generateSSRFiles(tree: Tree, schema: Schema) {
|
|||||||
{ ...schema, tpl: '' }
|
{ ...schema, tpl: '' }
|
||||||
);
|
);
|
||||||
|
|
||||||
const angularMajorVersion = getInstalledAngularMajorVersion(tree);
|
const { major: angularMajorVersion, version: angularVersion } =
|
||||||
|
getInstalledAngularVersionInfo(tree);
|
||||||
if (angularMajorVersion < 15) {
|
if (angularMajorVersion < 15) {
|
||||||
generateFiles(
|
generateFiles(
|
||||||
tree,
|
tree,
|
||||||
@ -26,4 +31,13 @@ export function generateSSRFiles(tree: Tree, schema: Schema) {
|
|||||||
{ ...schema, tpl: '' }
|
{ ...schema, tpl: '' }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (lt(angularVersion, '15.2.0')) {
|
||||||
|
generateFiles(
|
||||||
|
tree,
|
||||||
|
joinPathFragments(__dirname, '..', 'files', 'pre-v15-2'),
|
||||||
|
projectRoot,
|
||||||
|
{ ...schema, tpl: '' }
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,20 +35,11 @@ describe('setupSSR', () => {
|
|||||||
`);
|
`);
|
||||||
expect(tree.read('apps/app1/src/main.ts', 'utf-8')).toMatchInlineSnapshot(`
|
expect(tree.read('apps/app1/src/main.ts', 'utf-8')).toMatchInlineSnapshot(`
|
||||||
"import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
"import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
||||||
|
|
||||||
import { AppModule } from './app/app.module';
|
import { AppModule } from './app/app.module';
|
||||||
|
|
||||||
function bootstrap() {
|
|
||||||
platformBrowserDynamic()
|
platformBrowserDynamic()
|
||||||
.bootstrapModule(AppModule)
|
.bootstrapModule(AppModule)
|
||||||
.catch((err) => console.error(err));
|
.catch((err) => console.error(err));
|
||||||
}
|
|
||||||
|
|
||||||
if (document.readyState !== 'loading') {
|
|
||||||
bootstrap();
|
|
||||||
} else {
|
|
||||||
document.addEventListener('DOMContentLoaded', bootstrap);
|
|
||||||
}
|
|
||||||
"
|
"
|
||||||
`);
|
`);
|
||||||
expect(tree.read('apps/app1/tsconfig.server.json', 'utf-8'))
|
expect(tree.read('apps/app1/tsconfig.server.json', 'utf-8'))
|
||||||
@ -220,5 +211,40 @@ describe('setupSSR', () => {
|
|||||||
"
|
"
|
||||||
`);
|
`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should wrap bootstrap call for Angular versions lower than 15.2', async () => {
|
||||||
|
// ARRANGE
|
||||||
|
const tree = createTreeWithEmptyWorkspace({ layout: 'apps-libs' });
|
||||||
|
await generateTestApplication(tree, {
|
||||||
|
name: 'app1',
|
||||||
|
});
|
||||||
|
updateJson(tree, 'package.json', (json) => ({
|
||||||
|
...json,
|
||||||
|
dependencies: { '@angular/core': '15.1.0' },
|
||||||
|
}));
|
||||||
|
|
||||||
|
// ACT
|
||||||
|
await setupSsr(tree, { project: 'app1' });
|
||||||
|
|
||||||
|
// ASSERT
|
||||||
|
expect(tree.read('apps/app1/src/main.ts', 'utf-8'))
|
||||||
|
.toMatchInlineSnapshot(`
|
||||||
|
"import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
||||||
|
import { AppModule } from './app/app.module';
|
||||||
|
|
||||||
|
function bootstrap() {
|
||||||
|
platformBrowserDynamic()
|
||||||
|
.bootstrapModule(AppModule)
|
||||||
|
.catch((err) => console.error(err));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.readyState !== 'loading') {
|
||||||
|
bootstrap();
|
||||||
|
} else {
|
||||||
|
document.addEventListener('DOMContentLoaded', bootstrap);
|
||||||
|
}
|
||||||
|
"
|
||||||
|
`);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -78,8 +78,6 @@ describe('updateFileServerExecutor', () => {
|
|||||||
addProjectConfiguration(tree, 'test', project);
|
addProjectConfiguration(tree, 'test', project);
|
||||||
|
|
||||||
// ACT
|
// ACT
|
||||||
expect(async () => {
|
await expect(updateFileServerExecutor(tree)).resolves.not.toThrow();
|
||||||
await updateFileServerExecutor(tree);
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user