Skip to content

Commit 686c277

Browse files
DominicBoettgeradamdbradley
authored andcommitted
feat(prerender): Adding the prerender-external cli flag
* feat(prerender): Adding the prerender-external option to use the VNODES with external prerenderer * feat(prerender): Adding the prerender-external option tests * feat(prerender): Adding the prerender-external option - removed index html check and added documentation
1 parent cb0b271 commit 686c277

8 files changed

Lines changed: 24 additions & 3 deletions

File tree

src/cli/parse-flags.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ const ARG_OPTS = {
170170
'log',
171171
'open',
172172
'prerender',
173+
'prerender-external',
173174
'prod',
174175
'profile',
175176
'service-worker',

src/cli/test/parse-flags.spec.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,12 @@ describe('parseFlags', () => {
360360
expect(flags.prerender).toBe(true);
361361
});
362362

363+
it('should parse --prerender-external', () => {
364+
process.argv[2] = '--prerender-external';
365+
const flags = parseFlags(process);
366+
expect(flags.prerenderExternal).toBe(true);
367+
});
368+
363369
it('should parse --root', () => {
364370
process.argv[2] = '--root';
365371
process.argv[3] = 'custom-www';

src/client/platform-main-legacy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ export function createPlatformMainLegacy(namespace: string, Context: d.CoreConte
123123
}
124124
};
125125

126-
if (_BUILD_.prerenderClientSide) {
126+
if (_BUILD_.prerenderClientSide || _BUILD_.prerenderExternal) {
127127
// if the HTML was generated from prerendering
128128
// then let's walk the tree and generate vnodes out of the data
129129
createVNodesFromSsr(plt, domApi, rootElm);

src/client/platform-main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ export const createPlatformMain = (namespace: string, Context: d.CoreContext, wi
270270
}
271271
};
272272

273-
if (_BUILD_.prerenderClientSide) {
273+
if (_BUILD_.prerenderClientSide || _BUILD_.prerenderExternal) {
274274
// if the HTML was generated from prerendering
275275
// then let's walk the tree and generate vnodes out of the data
276276
createVNodesFromSsr(plt, domApi, rootElm);

src/compiler/prerender/prerender-app.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ export function shouldPrerender(config: d.Config) {
3939
return (outputTargets.length > 0);
4040
}
4141

42+
/**
43+
* shouldPrerenderExternal
44+
* @description Checks if the cli flag has been set that a external prerenderer will be used
45+
* @param config build config
46+
*/
47+
export function shouldPrerenderExternal(config: d.Config) {
48+
return config.flags && config.flags.prerenderExternal;
49+
}
4250

4351
async function prerenderOutputTarget(config: d.Config, compilerCtx: d.CompilerCtx, buildCtx: d.BuildCtx, outputTarget: d.OutputTargetWww, entryModules: d.EntryModule[]) {
4452
// if there was src index.html file, then the process before this one

src/declarations/build-conditionals.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export interface BuildConditionals {
2323
// ssr
2424
ssrServerSide: boolean;
2525
prerenderClientSide: boolean;
26+
prerenderExternal: boolean;
2627

2728
// encapsulation
2829
styles: boolean;

src/declarations/config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ export interface ConfigFlags {
221221
open?: boolean;
222222
port?: number;
223223
prerender?: boolean;
224+
prerenderExternal?: boolean;
224225
prod?: boolean;
225226
profile?: boolean;
226227
root?: string;

src/util/build-conditionals.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as d from '../declarations';
22
import { DEFAULT_STYLE_MODE, ENCAPSULATION, MEMBER_TYPE, PROP_TYPE } from './constants';
33
import { isTsFile } from '../compiler/util';
4-
import { shouldPrerender } from '../compiler/prerender/prerender-app';
4+
import { shouldPrerender, shouldPrerenderExternal } from '../compiler/prerender/prerender-app';
55

66

77
export function getDefaultBuildConditionals(): d.BuildConditionals {
@@ -14,6 +14,7 @@ export function getDefaultBuildConditionals(): d.BuildConditionals {
1414
slotPolyfill: true,
1515
ssrServerSide: true,
1616
prerenderClientSide: true,
17+
prerenderExternal: false,
1718
devInspector: true,
1819
hotModuleReplacement: true,
1920
verboseError: true,
@@ -89,6 +90,7 @@ export async function setBuildConditionals(
8990
cssVarShim: false,
9091
ssrServerSide: false,
9192
prerenderClientSide: false,
93+
prerenderExternal: false,
9294
shadowDom: false,
9395
scoped: false,
9496
slotPolyfill: false,
@@ -133,6 +135,7 @@ export async function setBuildConditionals(
133135
// modern build
134136
coreBuild.browserModuleLoader = true;
135137
coreBuild.prerenderClientSide = shouldPrerender(config);
138+
coreBuild.prerenderExternal = shouldPrerenderExternal(config);
136139
compilerCtx.lastBuildConditionalsBrowserEsm = coreBuild;
137140

138141
} else if (coreId === 'core.pf') {
@@ -142,6 +145,7 @@ export async function setBuildConditionals(
142145
coreBuild.polyfills = true;
143146
coreBuild.cssVarShim = true;
144147
coreBuild.prerenderClientSide = shouldPrerender(config);
148+
coreBuild.prerenderExternal = shouldPrerenderExternal(config);
145149
compilerCtx.lastBuildConditionalsBrowserEs5 = coreBuild;
146150

147151
} else if (coreId === 'esm.es5') {

0 commit comments

Comments
 (0)