mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-16 18:43:42 +08:00
feat(@schematics/angular): augment universal
schematics to import platform-server
shims
In angular/angular#40559, a new `@angular/platform-server/init` entry-point was introduced, which can be used to initialize the server environment by providing shims for APIs normally provided by the browser (such as DOM globals). If the project is using a version of Angular (and thus `@angular/platform-server`) that is known to include this new entry-point, the newly generated `main.server.ts` file should import it at the top in order to ensure that the shims will be available as soon as possible (before other direct or transitive imports that may rely on them). See also angular/angular#40559 for more details. NOTE: This `universal` schematic is the base for `app-shell`, `@nguniversal/express-engine` and `@nguniversal/hapi-engine`. Fixes angular/angular#40559
This commit is contained in:
parent
96a4467ce9
commit
1199205bc2
@ -1,6 +1,15 @@
|
||||
/***************************************************************************************************
|
||||
* Initialize the server environment - for example, adding DOM built-in types to the global scope.
|
||||
*
|
||||
* NOTE:
|
||||
* This import must come before any imports (direct or transitive) that rely on DOM built-ins being
|
||||
* available, such as `@angular/elements`.
|
||||
*/
|
||||
import '@angular/platform-server/init';
|
||||
|
||||
<% if (hasLocalizePackage) { %>/***************************************************************************************************
|
||||
* Load `$localize` onto the global scope - used if i18n tags appear in Angular templates.
|
||||
*/
|
||||
*/
|
||||
import '@angular/localize/init';
|
||||
|
||||
<% } %>import { enableProdMode } from '@angular/core';
|
||||
|
@ -242,6 +242,14 @@ describe('Universal Schematic', () => {
|
||||
expect(tree.exists(filePath)).toEqual(true);
|
||||
});
|
||||
|
||||
it(`should add import to '@angular/platform-server/init' in main file`, async () => {
|
||||
const tree = await schematicRunner.runSchematicAsync('universal', defaultOptions, appTree)
|
||||
.toPromise();
|
||||
const filePath = '/projects/bar/src/main.server.ts';
|
||||
const contents = tree.readContent(filePath);
|
||||
expect(contents).toContain('import \'@angular/platform-server/init\'');
|
||||
});
|
||||
|
||||
it(`should not add import to '@angular/localize' in main file when it's not a depedency`, async () => {
|
||||
const tree = await schematicRunner.runSchematicAsync('universal', defaultOptions, appTree)
|
||||
.toPromise();
|
||||
|
Loading…
x
Reference in New Issue
Block a user