diff --git a/docs/generated/packages/vite.json b/docs/generated/packages/vite.json
index 16dbd3d2865649..a9c6b090937b35 100644
--- a/docs/generated/packages/vite.json
+++ b/docs/generated/packages/vite.json
@@ -161,29 +161,18 @@
"description": "Path to the proxy configuration file.",
"x-completion-type": "file"
},
- "port": {
- "type": "number",
- "description": "Port to listen on.",
- "default": 4200
- },
+ "port": { "type": "number", "description": "Port to listen on." },
"host": {
"description": "Specify which IP addresses the server should listen on.",
- "default": "localhost",
"oneOf": [{ "type": "boolean" }, { "type": "string" }]
},
- "https": {
- "type": "boolean",
- "description": "Serve using HTTPS.",
- "default": false
- },
+ "https": { "type": "boolean", "description": "Serve using HTTPS." },
"hmr": {
"description": "Enable hot module replacement. For more options, use the 'hmr' option in the Vite configuration file.",
- "type": "boolean",
- "default": true
+ "type": "boolean"
},
"open": {
"description": "Automatically open the app in the browser on server start. When the value is a string, it will be used as the URL's pathname.",
- "default": false,
"oneOf": [{ "type": "boolean" }, { "type": "string" }]
},
"cors": {
@@ -198,12 +187,10 @@
"mode": {
"type": "string",
"description": "Mode to run the server in.",
- "enum": ["production", "development"],
- "default": "development"
+ "enum": ["production", "development"]
},
"clearScreen": {
"description": "Set to false to prevent Vite from clearing the terminal screen when logging certain messages.",
- "default": true,
"type": "boolean"
}
},
@@ -235,19 +222,14 @@
},
"baseHref": {
"type": "string",
- "description": "Base url for the application being built."
+ "description": "Base public path when served in development or production.",
+ "alias": "base"
},
"proxyConfig": {
"type": "string",
"description": "Path to the proxy configuration file.",
"x-completion-type": "file"
},
- "tsConfig": {
- "type": "string",
- "description": "The name of the Typescript configuration file.",
- "x-completion-type": "file",
- "x-completion-glob": "tsconfig.*.json"
- },
"configFile": {
"type": "string",
"description": "The name of the Vite.js configuration file.",
@@ -278,12 +260,10 @@
},
"sourcemap": {
"description": "Output sourcemaps. Use 'hidden' for use with error reporting tools without generating sourcemap comment.",
- "default": true,
"oneOf": [{ "type": "boolean" }, { "type": "string" }]
},
"minify": {
"description": "Output sourcemaps. Use 'hidden' for use with error reporting tools without generating sourcemap comment.",
- "default": "esbuild",
"oneOf": [{ "type": "boolean" }, { "type": "string" }]
},
"manifest": {
@@ -302,8 +282,7 @@
"mode": {
"type": "string",
"description": "Mode to run the build in.",
- "enum": ["production", "development"],
- "default": "production"
+ "enum": ["production", "development"]
}
},
"definitions": {
diff --git a/packages/vite/src/executors/build/build.impl.ts b/packages/vite/src/executors/build/build.impl.ts
index 05459ddbcd983b..103c1c31f5caf7 100644
--- a/packages/vite/src/executors/build/build.impl.ts
+++ b/packages/vite/src/executors/build/build.impl.ts
@@ -1,7 +1,7 @@
import 'dotenv/config';
import { ExecutorContext, logger } from '@nrwl/devkit';
import { build, InlineConfig } from 'vite';
-import { getBuildConfig } from '../../utils/options-utils';
+import { getBuildAndSharedConfig } from '../../utils/options-utils';
import { ViteBuildExecutorOptions } from './schema';
import { copyAssets } from '@nrwl/js';
import { existsSync } from 'fs';
@@ -14,7 +14,9 @@ export default async function viteBuildExecutor(
const projectRoot = context.workspace.projects[context.projectName].root;
logger.info(`NX Vite build starting ...`);
- const buildResult = await runInstance(await getBuildConfig(options, context));
+ const buildResult = await runInstance(
+ await getBuildAndSharedConfig(options, context)
+ );
logger.info(`NX Vite build finished ...`);
logger.info(`NX Vite files available in ${options.outputPath}`);
diff --git a/packages/vite/src/executors/build/schema.d.ts b/packages/vite/src/executors/build/schema.d.ts
index 78cdf04819a51a..0e03974cde4ca8 100644
--- a/packages/vite/src/executors/build/schema.d.ts
+++ b/packages/vite/src/executors/build/schema.d.ts
@@ -3,7 +3,6 @@ export interface ViteBuildExecutorOptions {
outputPath: string;
baseHref?: string;
proxyConfig?: string;
- tsConfig?: string;
configFile?: string;
fileReplacements?: FileReplacement[];
sourcemap?: boolean | 'inline' | 'hidden';
diff --git a/packages/vite/src/executors/build/schema.json b/packages/vite/src/executors/build/schema.json
index 26b7557e1aa6c9..bbd421218401b4 100644
--- a/packages/vite/src/executors/build/schema.json
+++ b/packages/vite/src/executors/build/schema.json
@@ -19,19 +19,14 @@
},
"baseHref": {
"type": "string",
- "description": "Base url for the application being built."
+ "description": "Base public path when served in development or production.",
+ "alias": "base"
},
"proxyConfig": {
"type": "string",
"description": "Path to the proxy configuration file.",
"x-completion-type": "file"
},
- "tsConfig": {
- "type": "string",
- "description": "The name of the Typescript configuration file.",
- "x-completion-type": "file",
- "x-completion-glob": "tsconfig.*.json"
- },
"configFile": {
"type": "string",
"description": "The name of the Vite.js configuration file.",
@@ -62,7 +57,6 @@
},
"sourcemap": {
"description": "Output sourcemaps. Use 'hidden' for use with error reporting tools without generating sourcemap comment.",
- "default": true,
"oneOf": [
{
"type": "boolean"
@@ -74,7 +68,6 @@
},
"minify": {
"description": "Output sourcemaps. Use 'hidden' for use with error reporting tools without generating sourcemap comment.",
- "default": "esbuild",
"oneOf": [
{
"type": "boolean"
@@ -114,8 +107,7 @@
"mode": {
"type": "string",
"description": "Mode to run the build in.",
- "enum": ["production", "development"],
- "default": "production"
+ "enum": ["production", "development"]
}
},
"definitions": {
diff --git a/packages/vite/src/executors/dev-server/dev-server.impl.ts b/packages/vite/src/executors/dev-server/dev-server.impl.ts
index a3de015f728855..4d32085ea70868 100644
--- a/packages/vite/src/executors/dev-server/dev-server.impl.ts
+++ b/packages/vite/src/executors/dev-server/dev-server.impl.ts
@@ -3,7 +3,7 @@ import { ExecutorContext } from '@nrwl/devkit';
import { createServer, InlineConfig, mergeConfig, ViteDevServer } from 'vite';
import {
- getBuildConfig,
+ getBuildAndSharedConfig,
getBuildTargetOptions,
getServerOptions,
} from '../../utils/options-utils';
@@ -21,7 +21,7 @@ export default async function* viteDevServerExecutor(
} as ViteDevServerExecutorOptions & ViteBuildExecutorOptions;
const serverConfig: InlineConfig = mergeConfig(
- await getBuildConfig(mergedOptions, context),
+ await getBuildAndSharedConfig(mergedOptions, context),
{
server: getServerOptions(mergedOptions, context),
} as InlineConfig
diff --git a/packages/vite/src/executors/dev-server/schema.json b/packages/vite/src/executors/dev-server/schema.json
index 08b793904553bd..0bbc1a9bb11048 100644
--- a/packages/vite/src/executors/dev-server/schema.json
+++ b/packages/vite/src/executors/dev-server/schema.json
@@ -27,12 +27,10 @@
},
"port": {
"type": "number",
- "description": "Port to listen on.",
- "default": 4200
+ "description": "Port to listen on."
},
"host": {
"description": "Specify which IP addresses the server should listen on.",
- "default": "localhost",
"oneOf": [
{
"type": "boolean"
@@ -44,17 +42,14 @@
},
"https": {
"type": "boolean",
- "description": "Serve using HTTPS.",
- "default": false
+ "description": "Serve using HTTPS."
},
"hmr": {
"description": "Enable hot module replacement. For more options, use the 'hmr' option in the Vite configuration file.",
- "type": "boolean",
- "default": true
+ "type": "boolean"
},
"open": {
"description": "Automatically open the app in the browser on server start. When the value is a string, it will be used as the URL's pathname.",
- "default": false,
"oneOf": [
{
"type": "boolean"
@@ -76,12 +71,10 @@
"mode": {
"type": "string",
"description": "Mode to run the server in.",
- "enum": ["production", "development"],
- "default": "development"
+ "enum": ["production", "development"]
},
"clearScreen": {
"description": "Set to false to prevent Vite from clearing the terminal screen when logging certain messages.",
- "default": true,
"type": "boolean"
}
},
diff --git a/packages/vite/src/utils/generator-utils.ts b/packages/vite/src/utils/generator-utils.ts
index d83e4f73861ab2..a2fec7bc8b4473 100644
--- a/packages/vite/src/utils/generator-utils.ts
+++ b/packages/vite/src/utils/generator-utils.ts
@@ -406,7 +406,13 @@ export function writeViteConfig(tree: Tree, options: Schema) {
}]
}
},`
- : '';
+ : ``;
+
+ const serverOption = `
+ server:{
+ port: 4200,
+ host: 'localhost',
+ },`;
switch (options.uiFramework) {
case 'react':
@@ -422,6 +428,7 @@ ${options.includeVitest ? '/// ' : ''}
}
export default defineConfig({
+ ${serverOption}
plugins: [
${options.includeLib ? dtsPlugin : ''}
react(),
@@ -447,6 +454,7 @@ ${options.includeVitest ? '/// ' : ''}
}
export default defineConfig({
+ ${serverOption}
plugins: [
${options.includeLib ? dtsPlugin : ''}
tsconfigPaths({
diff --git a/packages/vite/src/utils/options-utils.ts b/packages/vite/src/utils/options-utils.ts
index 577878a8f26efc..480e0b90dac01a 100644
--- a/packages/vite/src/utils/options-utils.ts
+++ b/packages/vite/src/utils/options-utils.ts
@@ -9,19 +9,17 @@ import { existsSync } from 'fs';
import { join, relative } from 'path';
import {
BuildOptions,
- defineConfig,
InlineConfig,
mergeConfig,
searchForWorkspaceRoot,
ServerOptions,
UserConfig,
- UserConfigFn,
} from 'vite';
import { ViteDevServerExecutorOptions } from '../executors/dev-server/schema';
import replaceFiles from '../../plugins/rollup-replace-files.plugin';
import { ViteBuildExecutorOptions } from '../executors/build/schema';
-export async function getBuildConfig(
+export async function getBuildAndSharedConfig(
options:
| (ViteDevServerExecutorOptions & ViteBuildExecutorOptions)
| ViteBuildExecutorOptions,
@@ -29,13 +27,10 @@ export async function getBuildConfig(
): Promise {
const projectRoot = context.workspace.projects[context.projectName].root;
- const userConfig: UserConfig = await getUserConfig(
- options as ViteDevServerExecutorOptions & ViteBuildExecutorOptions,
- context,
- projectRoot
- );
-
- return mergeConfig(userConfig, {
+ return mergeConfig({}, {
+ mode: options.mode,
+ root: projectRoot,
+ base: options.baseHref,
configFile: normalizeConfigFilePath(
options.configFile,
context.root,
@@ -63,33 +58,6 @@ export function normalizeConfigFilePath(
: undefined;
}
-export function normalizeTsConfigPath(
- tsConfig: string,
- workspaceRoot: string
-): string {
- return tsConfig
- ? joinPathFragments(`${workspaceRoot}/${tsConfig}`)
- : undefined;
-}
-
-export async function getUserConfig(
- options: ViteDevServerExecutorOptions & ViteBuildExecutorOptions,
- context: ExecutorContext,
- projectRoot: string
-): Promise {
- const baseUserConfig: UserConfigFn = (await defineConfig(() => {
- return {
- base: options.baseHref ?? '/',
- root: projectRoot,
- tsConfig: normalizeTsConfigPath(options.tsConfig, context.root),
- };
- })) as UserConfigFn;
- return baseUserConfig({
- command: 'build',
- mode: options['configurationName'],
- });
-}
-
export function getServerOptions(
options: ViteDevServerExecutorOptions,
context: ExecutorContext
@@ -122,7 +90,6 @@ export function getServerOptions(
open: options.open,
cors: options.cors,
logLevel: options.logLevel,
- mode: options.mode,
clearScreen: options.clearScreen,
};
@@ -159,7 +126,6 @@ export function getViteBuildOptions(
manifest: options.manifest,
ssrManifest: options.ssrManifest,
logLevel: options.logLevel,
- mode: options.mode,
};
return buildOptions;