@angular/build
Version:
Official build system for Angular
37 lines (36 loc) • 1.41 kB
JavaScript
;
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.dev/license
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.createServerBundleMetadata = createServerBundleMetadata;
/**
* Generates an esbuild plugin that appends metadata to the output bundle,
* marking it with server-side rendering (SSR) details for Angular SSR scenarios.
*
* @param options Optional configuration object.
* - `ssrEntryBundle`: If `true`, marks the bundle as an SSR entry point.
*
* @remarks We can't rely on `platform: node` or `platform: neutral`, as the latter
* is used for non-SSR-related code too (e.g., global scripts).
* @returns An esbuild plugin that injects SSR metadata into the build result's metafile.
*/
function createServerBundleMetadata(options) {
return {
name: 'angular-server-bundle-metadata',
setup(build) {
build.onEnd((result) => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const metafile = result.metafile;
if (metafile) {
metafile['ng-ssr-entry-bundle'] = !!options?.ssrEntryBundle;
metafile['ng-platform-server'] = true;
}
});
},
};
}