diff --git a/e2e/fixtures/rsbuild-csr-css/rsbuild.config.ts b/e2e/fixtures/rsbuild-csr-css/rsbuild.config.ts
index eb574a6..9017f17 100644
--- a/e2e/fixtures/rsbuild-csr-css/rsbuild.config.ts
+++ b/e2e/fixtures/rsbuild-csr-css/rsbuild.config.ts
@@ -6,6 +6,9 @@ export default () => {
browser: './src/main.ts',
inlineStylesExtension: 'css',
outputPath: './build',
+ define: {
+ nxAngularRsbuild: '"20.6.2"',
+ },
},
});
}
diff --git a/e2e/fixtures/rsbuild-csr-css/src/app/app.component.html b/e2e/fixtures/rsbuild-csr-css/src/app/app.component.html
index 2339c6a..e4b7fd7 100644
--- a/e2e/fixtures/rsbuild-csr-css/src/app/app.component.html
+++ b/e2e/fixtures/rsbuild-csr-css/src/app/app.component.html
@@ -1,2 +1,3 @@
+
@nx/angular-rsbuild v{{ ngAngularRsbuildVersion }}
diff --git a/e2e/fixtures/rsbuild-csr-css/src/app/app.component.ts b/e2e/fixtures/rsbuild-csr-css/src/app/app.component.ts
index 9b0d520..46f4a58 100644
--- a/e2e/fixtures/rsbuild-csr-css/src/app/app.component.ts
+++ b/e2e/fixtures/rsbuild-csr-css/src/app/app.component.ts
@@ -2,6 +2,8 @@ import { Component } from '@angular/core';
import { RouterModule } from '@angular/router';
import { NxWelcomeComponent } from './nx-welcome.component';
+declare const nxAngularRsbuild: string;
+
@Component({
imports: [NxWelcomeComponent, RouterModule],
selector: 'app-root',
@@ -10,4 +12,5 @@ import { NxWelcomeComponent } from './nx-welcome.component';
})
export class AppComponent {
title = 'rsbuild-csr-css';
+ ngAngularRsbuildVersion = nxAngularRsbuild;
}
diff --git a/e2e/fixtures/rspack-csr-css/rspack.config.js b/e2e/fixtures/rspack-csr-css/rspack.config.js
index 466cb11..dcd5d8c 100644
--- a/e2e/fixtures/rspack-csr-css/rspack.config.js
+++ b/e2e/fixtures/rspack-csr-css/rspack.config.js
@@ -34,6 +34,9 @@ module.exports = () => {
port: 8080,
proxyConfig: './proxy.conf.json',
},
+ define: {
+ nxAngularRspack: '"20.6.2"',
+ },
},
},
{
diff --git a/e2e/fixtures/rspack-csr-css/src/app/app.component.html b/e2e/fixtures/rspack-csr-css/src/app/app.component.html
index 3305573..28a3d32 100644
--- a/e2e/fixtures/rspack-csr-css/src/app/app.component.html
+++ b/e2e/fixtures/rspack-csr-css/src/app/app.component.html
@@ -1,3 +1,4 @@
+@nx/angular-rspack v{{ nxAngularRspackVersion }}
{{ greeting$ | async }}
diff --git a/e2e/fixtures/rspack-csr-css/src/app/app.component.ts b/e2e/fixtures/rspack-csr-css/src/app/app.component.ts
index 24ae095..6dc1b49 100644
--- a/e2e/fixtures/rspack-csr-css/src/app/app.component.ts
+++ b/e2e/fixtures/rspack-csr-css/src/app/app.component.ts
@@ -6,6 +6,8 @@ import { ApiService } from './api.service';
import { NxWelcomeComponent } from './nx-welcome.component';
import { ScssInlineTestComponent } from './scss-inline-test';
+declare const nxAngularRspack: string;
+
@Component({
imports: [
NxWelcomeComponent,
@@ -20,6 +22,7 @@ import { ScssInlineTestComponent } from './scss-inline-test';
export class AppComponent implements OnInit {
title = 'rsbuild-csr-css';
greeting$!: Observable;
+ nxAngularRspackVersion = nxAngularRspack;
constructor(private readonly apiService: ApiService) {}
diff --git a/packages/angular-rsbuild/src/lib/config/create-config.ts b/packages/angular-rsbuild/src/lib/config/create-config.ts
index 174145d..26dd6a4 100644
--- a/packages/angular-rsbuild/src/lib/config/create-config.ts
+++ b/packages/angular-rsbuild/src/lib/config/create-config.ts
@@ -154,6 +154,7 @@ export async function _createConfig(
define: {
...(isProd ? { ngDevMode: 'false' } : undefined),
ngJitMode: normalizedOptions.aot ? undefined : 'true', // @TODO: use normalizedOptions
+ ...normalizedOptions.define,
},
},
output: {
@@ -194,6 +195,7 @@ export async function _createConfig(
ngServerMode: true,
...(isProd ? { ngDevMode: 'false' } : undefined),
ngJitMode: normalizedOptions.aot ? undefined : 'true', // @TODO: use normalizedOptions
+ ...normalizedOptions.define,
},
},
output: {
diff --git a/packages/angular-rsbuild/src/lib/models/normalize-options.ts b/packages/angular-rsbuild/src/lib/models/normalize-options.ts
index cb0334b..eea9b5c 100644
--- a/packages/angular-rsbuild/src/lib/models/normalize-options.ts
+++ b/packages/angular-rsbuild/src/lib/models/normalize-options.ts
@@ -88,6 +88,7 @@ function validateChunkOptions(options: Partial) {
export const DEFAULT_PLUGIN_ANGULAR_OPTIONS: PluginAngularOptions = {
index: './src/index.html',
browser: './src/main.ts',
+ define: {},
server: undefined,
ssr: undefined,
fileReplacements: [],
@@ -121,6 +122,7 @@ export function normalizeOptions(
ssr,
optimization,
devServer,
+ define,
...restOptions
} = options;
@@ -150,6 +152,7 @@ export function normalizeOptions(
...restOptions,
...(server != null ? { server } : {}),
...(ssr != null ? { ssr: normalizedSsr } : {}),
+ ...(define != null ? { define } : {}),
optimization: normalizedOptimization,
outputPath: normalizeOutputPath(root, options.outputPath),
sourceMap: normalizeSourceMap(options.sourceMap),
diff --git a/packages/angular-rsbuild/src/lib/models/plugin-options.ts b/packages/angular-rsbuild/src/lib/models/plugin-options.ts
index f4d9e2d..cbf3a66 100644
--- a/packages/angular-rsbuild/src/lib/models/plugin-options.ts
+++ b/packages/angular-rsbuild/src/lib/models/plugin-options.ts
@@ -43,6 +43,12 @@ export interface SourceMap {
export interface PluginAngularOptions {
index: string;
browser: string;
+ /**
+ * Defines global identifiers that will be replaced with a specified constant value when found in any JavaScript or TypeScript code including libraries.
+ * The value will be used directly.
+ * String values must be put in quotes.
+ */
+ define?: Record;
server?: string;
ssr?:
| boolean
diff --git a/packages/angular-rspack/src/lib/models/angular-rspack-plugin-options.ts b/packages/angular-rspack/src/lib/models/angular-rspack-plugin-options.ts
index bac04fe..193a45b 100644
--- a/packages/angular-rspack/src/lib/models/angular-rspack-plugin-options.ts
+++ b/packages/angular-rspack/src/lib/models/angular-rspack-plugin-options.ts
@@ -90,6 +90,12 @@ export interface AngularRspackPluginOptions extends PluginUnsupportedOptions {
assets?: AssetElement[];
browser?: string;
commonChunk?: boolean;
+ /**
+ * Defines global identifiers that will be replaced with a specified constant value when found in any JavaScript or TypeScript code including libraries.
+ * The value will be used directly.
+ * String values must be put in quotes.
+ */
+ define?: Record;
devServer?: DevServerOptions;
extractLicenses?: boolean;
fileReplacements?: FileReplacement[];
diff --git a/packages/angular-rspack/src/lib/models/normalize-options.ts b/packages/angular-rspack/src/lib/models/normalize-options.ts
index a1d6fbf..396cf66 100644
--- a/packages/angular-rspack/src/lib/models/normalize-options.ts
+++ b/packages/angular-rspack/src/lib/models/normalize-options.ts
@@ -242,6 +242,7 @@ export function normalizeOptions(
aot,
browser: options.browser ?? './src/main.ts',
commonChunk: options.commonChunk ?? true,
+ define: options.define ?? {},
devServer: normalizeDevServer(options.devServer),
extractLicenses: options.extractLicenses ?? true,
fileReplacements: resolveFileReplacements(fileReplacements, root),
diff --git a/packages/angular-rspack/src/lib/models/unsupported-options.ts b/packages/angular-rspack/src/lib/models/unsupported-options.ts
index 81416aa..8686dc1 100644
--- a/packages/angular-rspack/src/lib/models/unsupported-options.ts
+++ b/packages/angular-rspack/src/lib/models/unsupported-options.ts
@@ -43,7 +43,6 @@ export interface PluginUnsupportedOptions {
};
externalDependencies?: string[];
clearScreen?: boolean;
- define?: Record;
baseHref?: string;
verbose?: boolean;
progress?: boolean;
@@ -76,7 +75,6 @@ export const TOP_LEVEL_OPTIONS_PENDING_SUPPORT = [
'security',
'externalDependencies',
'clearScreen',
- 'define',
'baseHref',
'verbose',
'progress',
diff --git a/packages/angular-rspack/src/lib/plugins/ng-rspack.ts b/packages/angular-rspack/src/lib/plugins/ng-rspack.ts
index 4ecc702..0b255b5 100644
--- a/packages/angular-rspack/src/lib/plugins/ng-rspack.ts
+++ b/packages/angular-rspack/src/lib/plugins/ng-rspack.ts
@@ -72,6 +72,7 @@ export class NgRspackPlugin implements RspackPluginInstance {
ngDevMode: isProduction ? 'false' : {},
ngJitMode: this.pluginOptions.aot ? undefined : 'true',
ngServerMode: this.pluginOptions.hasServer,
+ ...(this.pluginOptions.define ?? {}),
}).apply(compiler);
if (this.pluginOptions.assets) {
new CopyRspackPlugin({