@nx/vite 21.2.0 → 21.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/vite",
3
- "version": "21.2.0",
3
+ "version": "21.2.2",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for building and testing applications using Vite",
6
6
  "repository": {
@@ -30,11 +30,11 @@
30
30
  "migrations": "./migrations.json"
31
31
  },
32
32
  "dependencies": {
33
- "@nx/devkit": "21.2.0",
33
+ "@nx/devkit": "21.2.2",
34
34
  "@phenomnomnominal/tsquery": "~5.0.1",
35
35
  "@swc/helpers": "~0.5.0",
36
36
  "enquirer": "~2.3.6",
37
- "@nx/js": "21.2.0",
37
+ "@nx/js": "21.2.2",
38
38
  "picomatch": "4.0.2",
39
39
  "tsconfig-paths": "^4.1.2",
40
40
  "semver": "^7.6.3",
@@ -65,15 +65,16 @@ function nxViteTsPaths(options = {}) {
65
65
  exitOnError: false,
66
66
  resetDaemonClient: true
67
67
  });
68
- const { dependencies } = (0, _buildablelibsutils.calculateProjectBuildableDependencies)(undefined, projectGraph, _devkit.workspaceRoot, process.env.NX_TASK_TARGET_PROJECT, // When using incremental building and the serve target is called
68
+ // When using incremental building and the serve target is called
69
69
  // we need to get the deps for the 'build' target instead.
70
- process.env.NX_TASK_TARGET_TARGET === 'serve' ? 'build' : process.env.NX_TASK_TARGET_TARGET, process.env.NX_TASK_TARGET_CONFIGURATION);
70
+ const depsBuildTarget = process.env.NX_TASK_TARGET_TARGET === 'serve' ? 'build' : process.env.NX_TASK_TARGET_TARGET;
71
+ const { dependencies } = (0, _buildablelibsutils.calculateProjectBuildableDependencies)(undefined, projectGraph, _devkit.workspaceRoot, process.env.NX_TASK_TARGET_PROJECT, depsBuildTarget, process.env.NX_TASK_TARGET_CONFIGURATION);
71
72
  // This tsconfig is used via the Vite ts paths plugin.
72
73
  // It can be also used by other user-defined Vite plugins (e.g. for creating type declaration files).
73
74
  foundTsConfigPath = (0, _buildablelibsutils.createTmpTsConfig)(foundTsConfigPath, _devkit.workspaceRoot, (0, _nodepath.relative)(_devkit.workspaceRoot, projectRoot), dependencies, true);
74
75
  if (config.command === 'serve') {
75
76
  const buildableLibraryDependencies = dependencies.filter((dep)=>dep.node.type === 'lib').map((dep)=>dep.node.name).join(',');
76
- const buildCommand = `npx nx run-many --target=${process.env.NX_TASK_TARGET_TARGET} --projects=${buildableLibraryDependencies}`;
77
+ const buildCommand = `npx nx run-many --target=${depsBuildTarget} --projects=${buildableLibraryDependencies}`;
77
78
  config.plugins.push((0, _nxvitebuildcoordinationplugin.nxViteBuildCoordinationPlugin)({
78
79
  buildCommand
79
80
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../packages/vite/plugins/nx-tsconfig-paths.plugin.ts"],"sourcesContent":["import {\n createProjectGraphAsync,\n joinPathFragments,\n stripIndents,\n workspaceRoot,\n} from '@nx/devkit';\nimport { copyFileSync, existsSync } from 'node:fs';\nimport { join, relative, resolve } from 'node:path';\nimport {\n loadConfig,\n createMatchPath,\n MatchPath,\n ConfigLoaderSuccessResult,\n} from 'tsconfig-paths';\nimport {\n calculateProjectBuildableDependencies,\n createTmpTsConfig,\n} from '@nx/js/src/utils/buildable-libs-utils';\nimport { Plugin } from 'vite';\nimport { nxViteBuildCoordinationPlugin } from './nx-vite-build-coordination.plugin';\nimport { findFile } from '../src/utils/nx-tsconfig-paths-find-file';\nimport { isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { getProjectTsConfigPath } from '../src/utils/options-utils';\n\nexport interface nxViteTsPathsOptions {\n /**\n * Enable debug logging\n * If set to false, it will always ignore the debug logging even when `--verbose` or `NX_VERBOSE_LOGGING` is set to true.\n * @default undefined\n **/\n debug?: boolean;\n /**\n * export fields in package.json to use for resolving\n * @default [['exports', '.', 'import'], 'module', 'main']\n *\n * fallback resolution will use ['main', 'module']\n **/\n mainFields?: (string | string[])[];\n /**\n * extensions to check when resolving files when package.json resolution fails\n * @default ['.ts', '.tsx', '.js', '.jsx', '.json', '.mjs', '.cjs']\n **/\n extensions?: string[];\n /**\n * Inform Nx whether to use the raw source or to use the built output for buildable dependencies.\n * Set to `false` to use incremental builds.\n * @default true\n */\n buildLibsFromSource?: boolean;\n}\n\nexport function nxViteTsPaths(options: nxViteTsPathsOptions = {}) {\n let foundTsConfigPath: string;\n let matchTsPathEsm: MatchPath;\n let matchTsPathFallback: MatchPath | undefined;\n let tsConfigPathsEsm: ConfigLoaderSuccessResult;\n let tsConfigPathsFallback: ConfigLoaderSuccessResult;\n\n options.extensions ??= [\n '.ts',\n '.tsx',\n '.js',\n '.jsx',\n '.json',\n '.mts',\n '.mjs',\n '.cts',\n '.cjs',\n '.css',\n '.scss',\n '.less',\n ];\n options.mainFields ??= [['exports', '.', 'import'], 'module', 'main'];\n options.buildLibsFromSource ??= true;\n let projectRoot = '';\n\n return {\n name: 'nx-vite-ts-paths',\n // Ensure the resolveId aspect of the plugin is called before vite's internal resolver\n // Otherwise, issues can arise with Yarn Workspaces and Pnpm Workspaces\n enforce: 'pre',\n async configResolved(config: any) {\n projectRoot = config.root;\n const projectRootFromWorkspaceRoot = relative(workspaceRoot, projectRoot);\n foundTsConfigPath = getTsConfig(\n process.env.NX_TSCONFIG_PATH ??\n join(\n workspaceRoot,\n 'tmp',\n projectRootFromWorkspaceRoot,\n process.env.NX_TASK_TARGET_TARGET ?? 'build',\n 'tsconfig.generated.json'\n )\n );\n\n if (!foundTsConfigPath) return;\n\n if (\n !options.buildLibsFromSource &&\n !global.NX_GRAPH_CREATION &&\n config.mode !== 'test'\n ) {\n const projectGraph = await createProjectGraphAsync({\n exitOnError: false,\n resetDaemonClient: true,\n });\n const { dependencies } = calculateProjectBuildableDependencies(\n undefined,\n projectGraph,\n workspaceRoot,\n process.env.NX_TASK_TARGET_PROJECT,\n // When using incremental building and the serve target is called\n // we need to get the deps for the 'build' target instead.\n process.env.NX_TASK_TARGET_TARGET === 'serve'\n ? 'build'\n : process.env.NX_TASK_TARGET_TARGET,\n process.env.NX_TASK_TARGET_CONFIGURATION\n );\n // This tsconfig is used via the Vite ts paths plugin.\n // It can be also used by other user-defined Vite plugins (e.g. for creating type declaration files).\n foundTsConfigPath = createTmpTsConfig(\n foundTsConfigPath,\n workspaceRoot,\n relative(workspaceRoot, projectRoot),\n dependencies,\n true\n );\n\n if (config.command === 'serve') {\n const buildableLibraryDependencies = dependencies\n .filter((dep) => dep.node.type === 'lib')\n .map((dep) => dep.node.name)\n .join(',');\n const buildCommand = `npx nx run-many --target=${process.env.NX_TASK_TARGET_TARGET} --projects=${buildableLibraryDependencies}`;\n config.plugins.push(nxViteBuildCoordinationPlugin({ buildCommand }));\n }\n }\n\n const parsed = loadConfig(foundTsConfigPath);\n\n logIt('first parsed tsconfig: ', parsed);\n if (parsed.resultType === 'failed') {\n throw new Error(`Failed loading tsconfig at ${foundTsConfigPath}`);\n }\n tsConfigPathsEsm = parsed;\n\n matchTsPathEsm = createMatchPath(\n parsed.absoluteBaseUrl,\n parsed.paths,\n options.mainFields\n );\n\n const rootLevelTsConfig = getTsConfig(\n join(workspaceRoot, 'tsconfig.base.json')\n );\n const rootLevelParsed = loadConfig(rootLevelTsConfig);\n logIt('fallback parsed tsconfig: ', rootLevelParsed);\n if (rootLevelParsed.resultType === 'success') {\n tsConfigPathsFallback = rootLevelParsed;\n matchTsPathFallback = createMatchPath(\n rootLevelParsed.absoluteBaseUrl,\n rootLevelParsed.paths,\n ['main', 'module']\n );\n }\n },\n resolveId(importPath: string) {\n // Let other resolvers handle this path.\n if (!foundTsConfigPath) return null;\n\n let resolvedFile: string;\n try {\n resolvedFile = matchTsPathEsm(importPath);\n } catch (e) {\n logIt('Using fallback path matching.');\n resolvedFile = matchTsPathFallback?.(importPath);\n }\n\n if (!resolvedFile || !existsSync(resolvedFile)) {\n if (tsConfigPathsEsm || tsConfigPathsFallback) {\n logIt(\n `Unable to resolve ${importPath} with tsconfig paths. Using fallback file matching.`\n );\n resolvedFile =\n loadFileFromPaths(tsConfigPathsEsm, importPath) ||\n loadFileFromPaths(tsConfigPathsFallback, importPath);\n } else {\n logIt(`Unable to resolve ${importPath} with tsconfig paths`);\n }\n }\n\n logIt(`Resolved ${importPath} to ${resolvedFile}`);\n // Returning null defers to other resolveId functions and eventually the default resolution behavior\n // https://rollupjs.org/plugin-development/#resolveid\n return resolvedFile || null;\n },\n async writeBundle(options) {\n if (isUsingTsSolutionSetup()) return;\n const outDir = options.dir || 'dist';\n const src = resolve(projectRoot, 'package.json');\n if (existsSync(src)) {\n const dest = join(outDir, 'package.json');\n\n try {\n copyFileSync(src, dest);\n } catch (err) {\n console.error('Error copying package.json:', err);\n }\n }\n },\n } as Plugin;\n\n function getTsConfig(preferredTsConfigPath: string): string {\n const projectTsConfigPath = getProjectTsConfigPath(projectRoot);\n return [\n resolve(preferredTsConfigPath),\n projectTsConfigPath ? resolve(projectTsConfigPath) : null,\n resolve(join(workspaceRoot, 'tsconfig.base.json')),\n resolve(join(workspaceRoot, 'tsconfig.json')),\n resolve(join(workspaceRoot, 'jsconfig.json')),\n ]\n .filter(Boolean)\n .find((tsPath) => {\n if (existsSync(tsPath)) {\n logIt('Found tsconfig at', tsPath);\n return tsPath;\n }\n });\n }\n\n function logIt(...msg: any[]) {\n if (process.env.NX_VERBOSE_LOGGING === 'true' && options?.debug !== false) {\n console.debug('\\n[Nx Vite TsPaths]', ...msg);\n }\n }\n\n function loadFileFromPaths(\n tsconfig: ConfigLoaderSuccessResult,\n importPath: string\n ) {\n logIt(\n `Trying to resolve file from config in ${tsconfig.configFileAbsolutePath}`\n );\n let resolvedFile: string;\n for (const alias in tsconfig.paths) {\n const paths = tsconfig.paths[alias];\n\n const normalizedImport = alias.replace(/\\/\\*$/, '');\n\n if (\n importPath === normalizedImport ||\n importPath.startsWith(normalizedImport + '/')\n ) {\n const joinedPath = joinPathFragments(\n tsconfig.absoluteBaseUrl,\n paths[0].replace(/\\/\\*$/, '')\n );\n\n resolvedFile = findFile(\n importPath.replace(normalizedImport, joinedPath),\n options.extensions\n );\n\n if (\n resolvedFile === undefined &&\n options.extensions.some((ext) => importPath.endsWith(ext))\n ) {\n const foundExtension = options.extensions.find((ext) =>\n importPath.endsWith(ext)\n );\n const pathWithoutExtension = importPath\n .replace(normalizedImport, joinedPath)\n .slice(0, -foundExtension.length);\n resolvedFile = findFile(pathWithoutExtension, options.extensions);\n }\n }\n }\n\n return resolvedFile;\n }\n}\n"],"names":["nxViteTsPaths","options","foundTsConfigPath","matchTsPathEsm","matchTsPathFallback","tsConfigPathsEsm","tsConfigPathsFallback","extensions","mainFields","buildLibsFromSource","projectRoot","name","enforce","configResolved","config","root","projectRootFromWorkspaceRoot","relative","workspaceRoot","process","getTsConfig","env","NX_TSCONFIG_PATH","join","NX_TASK_TARGET_TARGET","global","NX_GRAPH_CREATION","mode","projectGraph","createProjectGraphAsync","exitOnError","resetDaemonClient","dependencies","calculateProjectBuildableDependencies","undefined","NX_TASK_TARGET_PROJECT","NX_TASK_TARGET_CONFIGURATION","createTmpTsConfig","command","buildableLibraryDependencies","filter","dep","node","type","map","buildCommand","plugins","push","nxViteBuildCoordinationPlugin","parsed","loadConfig","logIt","resultType","Error","createMatchPath","absoluteBaseUrl","paths","rootLevelTsConfig","rootLevelParsed","resolveId","importPath","resolvedFile","e","existsSync","loadFileFromPaths","writeBundle","isUsingTsSolutionSetup","outDir","dir","src","resolve","dest","copyFileSync","err","console","error","preferredTsConfigPath","projectTsConfigPath","getProjectTsConfigPath","Boolean","find","tsPath","msg","NX_VERBOSE_LOGGING","debug","tsconfig","configFileAbsolutePath","alias","normalizedImport","replace","startsWith","joinedPath","joinPathFragments","findFile","some","ext","endsWith","foundExtension","pathWithoutExtension","slice","length"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../packages/vite/plugins/nx-tsconfig-paths.plugin.ts"],"sourcesContent":["import {\n createProjectGraphAsync,\n joinPathFragments,\n stripIndents,\n workspaceRoot,\n} from '@nx/devkit';\nimport { copyFileSync, existsSync } from 'node:fs';\nimport { join, relative, resolve } from 'node:path';\nimport {\n loadConfig,\n createMatchPath,\n MatchPath,\n ConfigLoaderSuccessResult,\n} from 'tsconfig-paths';\nimport {\n calculateProjectBuildableDependencies,\n createTmpTsConfig,\n} from '@nx/js/src/utils/buildable-libs-utils';\nimport { Plugin } from 'vite';\nimport { nxViteBuildCoordinationPlugin } from './nx-vite-build-coordination.plugin';\nimport { findFile } from '../src/utils/nx-tsconfig-paths-find-file';\nimport { isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { getProjectTsConfigPath } from '../src/utils/options-utils';\n\nexport interface nxViteTsPathsOptions {\n /**\n * Enable debug logging\n * If set to false, it will always ignore the debug logging even when `--verbose` or `NX_VERBOSE_LOGGING` is set to true.\n * @default undefined\n **/\n debug?: boolean;\n /**\n * export fields in package.json to use for resolving\n * @default [['exports', '.', 'import'], 'module', 'main']\n *\n * fallback resolution will use ['main', 'module']\n **/\n mainFields?: (string | string[])[];\n /**\n * extensions to check when resolving files when package.json resolution fails\n * @default ['.ts', '.tsx', '.js', '.jsx', '.json', '.mjs', '.cjs']\n **/\n extensions?: string[];\n /**\n * Inform Nx whether to use the raw source or to use the built output for buildable dependencies.\n * Set to `false` to use incremental builds.\n * @default true\n */\n buildLibsFromSource?: boolean;\n}\n\nexport function nxViteTsPaths(options: nxViteTsPathsOptions = {}) {\n let foundTsConfigPath: string;\n let matchTsPathEsm: MatchPath;\n let matchTsPathFallback: MatchPath | undefined;\n let tsConfigPathsEsm: ConfigLoaderSuccessResult;\n let tsConfigPathsFallback: ConfigLoaderSuccessResult;\n\n options.extensions ??= [\n '.ts',\n '.tsx',\n '.js',\n '.jsx',\n '.json',\n '.mts',\n '.mjs',\n '.cts',\n '.cjs',\n '.css',\n '.scss',\n '.less',\n ];\n options.mainFields ??= [['exports', '.', 'import'], 'module', 'main'];\n options.buildLibsFromSource ??= true;\n let projectRoot = '';\n\n return {\n name: 'nx-vite-ts-paths',\n // Ensure the resolveId aspect of the plugin is called before vite's internal resolver\n // Otherwise, issues can arise with Yarn Workspaces and Pnpm Workspaces\n enforce: 'pre',\n async configResolved(config: any) {\n projectRoot = config.root;\n const projectRootFromWorkspaceRoot = relative(workspaceRoot, projectRoot);\n foundTsConfigPath = getTsConfig(\n process.env.NX_TSCONFIG_PATH ??\n join(\n workspaceRoot,\n 'tmp',\n projectRootFromWorkspaceRoot,\n process.env.NX_TASK_TARGET_TARGET ?? 'build',\n 'tsconfig.generated.json'\n )\n );\n\n if (!foundTsConfigPath) return;\n\n if (\n !options.buildLibsFromSource &&\n !global.NX_GRAPH_CREATION &&\n config.mode !== 'test'\n ) {\n const projectGraph = await createProjectGraphAsync({\n exitOnError: false,\n resetDaemonClient: true,\n });\n // When using incremental building and the serve target is called\n // we need to get the deps for the 'build' target instead.\n const depsBuildTarget =\n process.env.NX_TASK_TARGET_TARGET === 'serve'\n ? 'build'\n : process.env.NX_TASK_TARGET_TARGET;\n const { dependencies } = calculateProjectBuildableDependencies(\n undefined,\n projectGraph,\n workspaceRoot,\n process.env.NX_TASK_TARGET_PROJECT,\n depsBuildTarget,\n process.env.NX_TASK_TARGET_CONFIGURATION\n );\n // This tsconfig is used via the Vite ts paths plugin.\n // It can be also used by other user-defined Vite plugins (e.g. for creating type declaration files).\n foundTsConfigPath = createTmpTsConfig(\n foundTsConfigPath,\n workspaceRoot,\n relative(workspaceRoot, projectRoot),\n dependencies,\n true\n );\n\n if (config.command === 'serve') {\n const buildableLibraryDependencies = dependencies\n .filter((dep) => dep.node.type === 'lib')\n .map((dep) => dep.node.name)\n .join(',');\n const buildCommand = `npx nx run-many --target=${depsBuildTarget} --projects=${buildableLibraryDependencies}`;\n config.plugins.push(nxViteBuildCoordinationPlugin({ buildCommand }));\n }\n }\n\n const parsed = loadConfig(foundTsConfigPath);\n\n logIt('first parsed tsconfig: ', parsed);\n if (parsed.resultType === 'failed') {\n throw new Error(`Failed loading tsconfig at ${foundTsConfigPath}`);\n }\n tsConfigPathsEsm = parsed;\n\n matchTsPathEsm = createMatchPath(\n parsed.absoluteBaseUrl,\n parsed.paths,\n options.mainFields\n );\n\n const rootLevelTsConfig = getTsConfig(\n join(workspaceRoot, 'tsconfig.base.json')\n );\n const rootLevelParsed = loadConfig(rootLevelTsConfig);\n logIt('fallback parsed tsconfig: ', rootLevelParsed);\n if (rootLevelParsed.resultType === 'success') {\n tsConfigPathsFallback = rootLevelParsed;\n matchTsPathFallback = createMatchPath(\n rootLevelParsed.absoluteBaseUrl,\n rootLevelParsed.paths,\n ['main', 'module']\n );\n }\n },\n resolveId(importPath: string) {\n // Let other resolvers handle this path.\n if (!foundTsConfigPath) return null;\n\n let resolvedFile: string;\n try {\n resolvedFile = matchTsPathEsm(importPath);\n } catch (e) {\n logIt('Using fallback path matching.');\n resolvedFile = matchTsPathFallback?.(importPath);\n }\n\n if (!resolvedFile || !existsSync(resolvedFile)) {\n if (tsConfigPathsEsm || tsConfigPathsFallback) {\n logIt(\n `Unable to resolve ${importPath} with tsconfig paths. Using fallback file matching.`\n );\n resolvedFile =\n loadFileFromPaths(tsConfigPathsEsm, importPath) ||\n loadFileFromPaths(tsConfigPathsFallback, importPath);\n } else {\n logIt(`Unable to resolve ${importPath} with tsconfig paths`);\n }\n }\n\n logIt(`Resolved ${importPath} to ${resolvedFile}`);\n // Returning null defers to other resolveId functions and eventually the default resolution behavior\n // https://rollupjs.org/plugin-development/#resolveid\n return resolvedFile || null;\n },\n async writeBundle(options) {\n if (isUsingTsSolutionSetup()) return;\n const outDir = options.dir || 'dist';\n const src = resolve(projectRoot, 'package.json');\n if (existsSync(src)) {\n const dest = join(outDir, 'package.json');\n\n try {\n copyFileSync(src, dest);\n } catch (err) {\n console.error('Error copying package.json:', err);\n }\n }\n },\n } as Plugin;\n\n function getTsConfig(preferredTsConfigPath: string): string {\n const projectTsConfigPath = getProjectTsConfigPath(projectRoot);\n return [\n resolve(preferredTsConfigPath),\n projectTsConfigPath ? resolve(projectTsConfigPath) : null,\n resolve(join(workspaceRoot, 'tsconfig.base.json')),\n resolve(join(workspaceRoot, 'tsconfig.json')),\n resolve(join(workspaceRoot, 'jsconfig.json')),\n ]\n .filter(Boolean)\n .find((tsPath) => {\n if (existsSync(tsPath)) {\n logIt('Found tsconfig at', tsPath);\n return tsPath;\n }\n });\n }\n\n function logIt(...msg: any[]) {\n if (process.env.NX_VERBOSE_LOGGING === 'true' && options?.debug !== false) {\n console.debug('\\n[Nx Vite TsPaths]', ...msg);\n }\n }\n\n function loadFileFromPaths(\n tsconfig: ConfigLoaderSuccessResult,\n importPath: string\n ) {\n logIt(\n `Trying to resolve file from config in ${tsconfig.configFileAbsolutePath}`\n );\n let resolvedFile: string;\n for (const alias in tsconfig.paths) {\n const paths = tsconfig.paths[alias];\n\n const normalizedImport = alias.replace(/\\/\\*$/, '');\n\n if (\n importPath === normalizedImport ||\n importPath.startsWith(normalizedImport + '/')\n ) {\n const joinedPath = joinPathFragments(\n tsconfig.absoluteBaseUrl,\n paths[0].replace(/\\/\\*$/, '')\n );\n\n resolvedFile = findFile(\n importPath.replace(normalizedImport, joinedPath),\n options.extensions\n );\n\n if (\n resolvedFile === undefined &&\n options.extensions.some((ext) => importPath.endsWith(ext))\n ) {\n const foundExtension = options.extensions.find((ext) =>\n importPath.endsWith(ext)\n );\n const pathWithoutExtension = importPath\n .replace(normalizedImport, joinedPath)\n .slice(0, -foundExtension.length);\n resolvedFile = findFile(pathWithoutExtension, options.extensions);\n }\n }\n }\n\n return resolvedFile;\n }\n}\n"],"names":["nxViteTsPaths","options","foundTsConfigPath","matchTsPathEsm","matchTsPathFallback","tsConfigPathsEsm","tsConfigPathsFallback","extensions","mainFields","buildLibsFromSource","projectRoot","name","enforce","configResolved","config","root","projectRootFromWorkspaceRoot","relative","workspaceRoot","process","getTsConfig","env","NX_TSCONFIG_PATH","join","NX_TASK_TARGET_TARGET","global","NX_GRAPH_CREATION","mode","projectGraph","createProjectGraphAsync","exitOnError","resetDaemonClient","depsBuildTarget","dependencies","calculateProjectBuildableDependencies","undefined","NX_TASK_TARGET_PROJECT","NX_TASK_TARGET_CONFIGURATION","createTmpTsConfig","command","buildableLibraryDependencies","filter","dep","node","type","map","buildCommand","plugins","push","nxViteBuildCoordinationPlugin","parsed","loadConfig","logIt","resultType","Error","createMatchPath","absoluteBaseUrl","paths","rootLevelTsConfig","rootLevelParsed","resolveId","importPath","resolvedFile","e","existsSync","loadFileFromPaths","writeBundle","isUsingTsSolutionSetup","outDir","dir","src","resolve","dest","copyFileSync","err","console","error","preferredTsConfigPath","projectTsConfigPath","getProjectTsConfigPath","Boolean","find","tsPath","msg","NX_VERBOSE_LOGGING","debug","tsconfig","configFileAbsolutePath","alias","normalizedImport","replace","startsWith","joinedPath","joinPathFragments","findFile","some","ext","endsWith","foundExtension","pathWithoutExtension","slice","length"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -82,7 +82,8 @@ async function* viteBuildExecutor(options, context) {
82
82
  const rootPackageJson = (0, _path.resolve)(context.root, 'package.json');
83
83
  // Here, we want the outdir relative to the workspace root.
84
84
  // So, we calculate the relative path from the workspace root to the outdir.
85
- const outDirRelativeToWorkspaceRoot = outDir.replaceAll('../', '');
85
+ const absoluteOutDir = (0, _path.resolve)((0, _path.resolve)(context.root, projectRoot), outDir);
86
+ const outDirRelativeToWorkspaceRoot = (0, _path.relative)(context.root, absoluteOutDir);
86
87
  const distPackageJson = (0, _path.resolve)(outDirRelativeToWorkspaceRoot, 'package.json');
87
88
  // Generate a package.json if option has been set.
88
89
  if (options.generatePackageJson) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/executors/build/build.impl.ts"],"sourcesContent":["import {\n detectPackageManager,\n ExecutorContext,\n joinPathFragments,\n logger,\n offsetFromRoot,\n stripIndents,\n writeJsonFile,\n} from '@nx/devkit';\nimport {\n getProjectTsConfigPath,\n normalizeViteConfigFilePath,\n} from '../../utils/options-utils';\nimport { ViteBuildExecutorOptions } from './schema';\nimport {\n copyAssets,\n createLockFile,\n createPackageJson,\n getLockFileName,\n} from '@nx/js';\nimport { existsSync, writeFileSync } from 'fs';\nimport { relative, resolve } from 'path';\nimport {\n combineAsyncIterables,\n createAsyncIterable,\n} from '@nx/devkit/src/utils/async-iterable';\nimport {\n createBuildableTsConfig,\n loadViteDynamicImport,\n validateTypes,\n} from '../../utils/executor-utils';\nimport { type Plugin } from 'vite';\nimport { isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';\n\nexport async function* viteBuildExecutor(\n options: Record<string, any> & ViteBuildExecutorOptions,\n context: ExecutorContext\n) {\n process.env.VITE_CJS_IGNORE_WARNING = 'true';\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { mergeConfig, build, resolveConfig, createBuilder } =\n await loadViteDynamicImport();\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const tsConfigForBuild = createBuildableTsConfig(\n projectRoot,\n options,\n context\n );\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n options.configFile\n );\n const root =\n projectRoot === '.' || projectRoot === ''\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n const { buildOptions, otherOptions } = await getBuildExtraArgs(options);\n const defaultMode = otherOptions?.mode ?? 'production';\n\n const resolved = await resolveConfig(\n {\n configFile: viteConfigPath,\n mode: defaultMode,\n },\n 'build',\n defaultMode,\n process.env.NODE_ENV ?? defaultMode\n );\n\n const outDir =\n joinPathFragments(offsetFromRoot(projectRoot), options.outputPath) ??\n resolved?.build?.outDir;\n\n const buildConfig = mergeConfig(\n {\n // This should not be needed as it's going to be set in vite.config.ts\n // but leaving it here in case someone did not migrate correctly\n root: resolved.root ?? root,\n configFile: viteConfigPath,\n },\n {\n build: {\n outDir,\n ...buildOptions,\n },\n ...otherOptions,\n }\n );\n // New TS Solution already has a typecheck target\n if (!options.skipTypeCheck && !isUsingTsSolutionSetup()) {\n await validateTypes({\n workspaceRoot: context.root,\n tsconfig: tsConfigForBuild,\n isVueProject: Boolean(\n resolved.plugins?.find(\n (plugin: Plugin) =>\n typeof plugin === 'object' && plugin?.name === 'vite:vue'\n )\n ),\n });\n }\n\n const builder =\n createBuilder !== undefined && options.useEnvironmentsApi\n ? await createBuilder(buildConfig)\n : // This is needed to ensure support for Vite 5\n {\n build: (inlineConfig) => build(inlineConfig),\n environments: { build: buildConfig },\n };\n\n let iterables: AsyncIterable<{ success: boolean; outfile?: string }>[] = [];\n for (const env of Object.values(builder.environments)) {\n // This is needed to overwrite the resolve build config with executor options in Vite 6\n if (env.config?.build) {\n env.config.build = {\n ...env.config.build,\n ...buildConfig.build,\n };\n }\n const watcherOrOutput = await builder.build(env as any);\n\n const libraryPackageJson = resolve(projectRoot, 'package.json');\n const rootPackageJson = resolve(context.root, 'package.json');\n\n // Here, we want the outdir relative to the workspace root.\n // So, we calculate the relative path from the workspace root to the outdir.\n const outDirRelativeToWorkspaceRoot = outDir.replaceAll('../', '');\n const distPackageJson = resolve(\n outDirRelativeToWorkspaceRoot,\n 'package.json'\n );\n\n // Generate a package.json if option has been set.\n if (options.generatePackageJson) {\n if (context.projectGraph.nodes[context.projectName].type !== 'app') {\n logger.warn(\n stripIndents`The project ${context.projectName} is using the 'generatePackageJson' option which is deprecated for library projects. It should only be used for applications.\n For libraries, configure the project to use the '@nx/dependency-checks' ESLint rule instead (https://nx.dev/nx-api/eslint-plugin/documents/dependency-checks).`\n );\n }\n\n const builtPackageJson = createPackageJson(\n context.projectName,\n context.projectGraph,\n {\n target: context.targetName,\n root: context.root,\n isProduction: !options.includeDevDependenciesInPackageJson, // By default we remove devDependencies since this is a production build.\n skipOverrides: options.skipOverrides,\n skipPackageManager: options.skipPackageManager,\n }\n );\n\n builtPackageJson.type ??= 'module';\n\n writeJsonFile(\n `${outDirRelativeToWorkspaceRoot}/package.json`,\n builtPackageJson\n );\n const packageManager = detectPackageManager(context.root);\n\n const lockFile = createLockFile(\n builtPackageJson,\n context.projectGraph,\n packageManager\n );\n writeFileSync(\n `${outDirRelativeToWorkspaceRoot}/${getLockFileName(packageManager)}`,\n lockFile,\n {\n encoding: 'utf-8',\n }\n );\n }\n // For buildable libs, copy package.json if it exists.\n else if (\n options.generatePackageJson !== false &&\n !existsSync(distPackageJson) &&\n existsSync(libraryPackageJson) &&\n rootPackageJson !== libraryPackageJson\n ) {\n await copyAssets(\n {\n outputPath: outDirRelativeToWorkspaceRoot,\n assets: [\n {\n input: projectRoot,\n output: '.',\n glob: 'package.json',\n },\n ],\n },\n context\n );\n }\n\n const iterable = createAsyncIterable<{\n success: boolean;\n outfile?: string;\n }>(({ next, done }) => {\n if ('on' in watcherOrOutput) {\n let success = true;\n watcherOrOutput.on('event', (event) => {\n if (event.code === 'START') {\n success = true;\n } else if (event.code === 'ERROR') {\n success = false;\n } else if (event.code === 'END') {\n next({ success });\n }\n // result must be closed when present.\n // see https://rollupjs.org/guide/en/#rollupwatch\n if ('result' in event && event.result) {\n event.result.close();\n }\n });\n } else {\n const output =\n watcherOrOutput?.['output'] || watcherOrOutput?.[0]?.output;\n const fileName = output?.[0]?.fileName || 'main.cjs';\n const outfile = resolve(outDirRelativeToWorkspaceRoot, fileName);\n next({ success: true, outfile });\n done();\n }\n });\n iterables.push(iterable);\n }\n return yield* combineAsyncIterables(iterables.shift(), ...(iterables ?? []));\n}\n\nexport async function getBuildExtraArgs(\n options: ViteBuildExecutorOptions\n): Promise<{\n // vite BuildOptions\n buildOptions: Record<string, unknown>;\n otherOptions: Record<string, any>;\n}> {\n // support passing extra args to vite cli\n const schema = await import('./schema.json');\n const extraArgs = {};\n for (const key of Object.keys(options)) {\n if (!schema.properties[key]) {\n extraArgs[key] = options[key];\n }\n }\n\n const buildOptions = {};\n const buildSchemaKeys = [\n 'target',\n 'polyfillModulePreload',\n 'modulePreload',\n 'outDir',\n 'assetsDir',\n 'assetsInlineLimit',\n 'cssCodeSplit',\n 'cssTarget',\n 'cssMinify',\n 'sourcemap',\n 'minify',\n 'terserOptions',\n 'rollupOptions',\n 'commonjsOptions',\n 'dynamicImportVarsOptions',\n 'write',\n 'emptyOutDir',\n 'copyPublicDir',\n 'manifest',\n 'lib',\n 'ssr',\n 'ssrManifest',\n 'ssrEmitAssets',\n 'reportCompressedSize',\n 'chunkSizeWarningLimit',\n 'watch',\n ];\n const otherOptions = {};\n for (const key of Object.keys(extraArgs)) {\n if (buildSchemaKeys.includes(key)) {\n buildOptions[key] = extraArgs[key];\n } else {\n otherOptions[key] = extraArgs[key];\n }\n }\n\n buildOptions['watch'] = options.watch ?? undefined;\n\n return {\n buildOptions,\n otherOptions,\n };\n}\n\nexport default viteBuildExecutor;\n"],"names":["getBuildExtraArgs","viteBuildExecutor","options","context","resolved","process","env","VITE_CJS_IGNORE_WARNING","mergeConfig","build","resolveConfig","createBuilder","loadViteDynamicImport","projectRoot","projectsConfigurations","projects","projectName","root","tsConfigForBuild","createBuildableTsConfig","viteConfigPath","normalizeViteConfigFilePath","configFile","cwd","relative","joinPathFragments","buildOptions","otherOptions","defaultMode","mode","NODE_ENV","outDir","offsetFromRoot","outputPath","buildConfig","skipTypeCheck","isUsingTsSolutionSetup","validateTypes","workspaceRoot","tsconfig","isVueProject","Boolean","plugins","find","plugin","name","builder","undefined","useEnvironmentsApi","inlineConfig","environments","iterables","Object","values","config","watcherOrOutput","libraryPackageJson","resolve","rootPackageJson","outDirRelativeToWorkspaceRoot","replaceAll","distPackageJson","generatePackageJson","builtPackageJson","projectGraph","nodes","type","logger","warn","stripIndents","createPackageJson","target","targetName","isProduction","includeDevDependenciesInPackageJson","skipOverrides","skipPackageManager","writeJsonFile","packageManager","detectPackageManager","lockFile","createLockFile","writeFileSync","getLockFileName","encoding","existsSync","copyAssets","assets","input","output","glob","iterable","createAsyncIterable","next","done","success","on","event","code","result","close","fileName","outfile","push","combineAsyncIterables","shift","schema","extraArgs","key","keys","properties","buildSchemaKeys","includes","watch"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/executors/build/build.impl.ts"],"sourcesContent":["import {\n detectPackageManager,\n ExecutorContext,\n joinPathFragments,\n logger,\n offsetFromRoot,\n stripIndents,\n writeJsonFile,\n} from '@nx/devkit';\nimport {\n getProjectTsConfigPath,\n normalizeViteConfigFilePath,\n} from '../../utils/options-utils';\nimport { ViteBuildExecutorOptions } from './schema';\nimport {\n copyAssets,\n createLockFile,\n createPackageJson,\n getLockFileName,\n} from '@nx/js';\nimport { existsSync, writeFileSync } from 'fs';\nimport { relative, resolve } from 'path';\nimport {\n combineAsyncIterables,\n createAsyncIterable,\n} from '@nx/devkit/src/utils/async-iterable';\nimport {\n createBuildableTsConfig,\n loadViteDynamicImport,\n validateTypes,\n} from '../../utils/executor-utils';\nimport { type Plugin } from 'vite';\nimport { isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';\n\nexport async function* viteBuildExecutor(\n options: Record<string, any> & ViteBuildExecutorOptions,\n context: ExecutorContext\n) {\n process.env.VITE_CJS_IGNORE_WARNING = 'true';\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { mergeConfig, build, resolveConfig, createBuilder } =\n await loadViteDynamicImport();\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const tsConfigForBuild = createBuildableTsConfig(\n projectRoot,\n options,\n context\n );\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n options.configFile\n );\n const root =\n projectRoot === '.' || projectRoot === ''\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n const { buildOptions, otherOptions } = await getBuildExtraArgs(options);\n const defaultMode = otherOptions?.mode ?? 'production';\n\n const resolved = await resolveConfig(\n {\n configFile: viteConfigPath,\n mode: defaultMode,\n },\n 'build',\n defaultMode,\n process.env.NODE_ENV ?? defaultMode\n );\n\n const outDir =\n joinPathFragments(offsetFromRoot(projectRoot), options.outputPath) ??\n resolved?.build?.outDir;\n\n const buildConfig = mergeConfig(\n {\n // This should not be needed as it's going to be set in vite.config.ts\n // but leaving it here in case someone did not migrate correctly\n root: resolved.root ?? root,\n configFile: viteConfigPath,\n },\n {\n build: {\n outDir,\n ...buildOptions,\n },\n ...otherOptions,\n }\n );\n // New TS Solution already has a typecheck target\n if (!options.skipTypeCheck && !isUsingTsSolutionSetup()) {\n await validateTypes({\n workspaceRoot: context.root,\n tsconfig: tsConfigForBuild,\n isVueProject: Boolean(\n resolved.plugins?.find(\n (plugin: Plugin) =>\n typeof plugin === 'object' && plugin?.name === 'vite:vue'\n )\n ),\n });\n }\n\n const builder =\n createBuilder !== undefined && options.useEnvironmentsApi\n ? await createBuilder(buildConfig)\n : // This is needed to ensure support for Vite 5\n {\n build: (inlineConfig) => build(inlineConfig),\n environments: { build: buildConfig },\n };\n\n let iterables: AsyncIterable<{ success: boolean; outfile?: string }>[] = [];\n for (const env of Object.values(builder.environments)) {\n // This is needed to overwrite the resolve build config with executor options in Vite 6\n if (env.config?.build) {\n env.config.build = {\n ...env.config.build,\n ...buildConfig.build,\n };\n }\n const watcherOrOutput = await builder.build(env as any);\n\n const libraryPackageJson = resolve(projectRoot, 'package.json');\n const rootPackageJson = resolve(context.root, 'package.json');\n\n // Here, we want the outdir relative to the workspace root.\n // So, we calculate the relative path from the workspace root to the outdir.\n const absoluteOutDir = resolve(resolve(context.root, projectRoot), outDir);\n const outDirRelativeToWorkspaceRoot = relative(\n context.root,\n absoluteOutDir\n );\n const distPackageJson = resolve(\n outDirRelativeToWorkspaceRoot,\n 'package.json'\n );\n\n // Generate a package.json if option has been set.\n if (options.generatePackageJson) {\n if (context.projectGraph.nodes[context.projectName].type !== 'app') {\n logger.warn(\n stripIndents`The project ${context.projectName} is using the 'generatePackageJson' option which is deprecated for library projects. It should only be used for applications.\n For libraries, configure the project to use the '@nx/dependency-checks' ESLint rule instead (https://nx.dev/nx-api/eslint-plugin/documents/dependency-checks).`\n );\n }\n\n const builtPackageJson = createPackageJson(\n context.projectName,\n context.projectGraph,\n {\n target: context.targetName,\n root: context.root,\n isProduction: !options.includeDevDependenciesInPackageJson, // By default we remove devDependencies since this is a production build.\n skipOverrides: options.skipOverrides,\n skipPackageManager: options.skipPackageManager,\n }\n );\n\n builtPackageJson.type ??= 'module';\n\n writeJsonFile(\n `${outDirRelativeToWorkspaceRoot}/package.json`,\n builtPackageJson\n );\n const packageManager = detectPackageManager(context.root);\n\n const lockFile = createLockFile(\n builtPackageJson,\n context.projectGraph,\n packageManager\n );\n writeFileSync(\n `${outDirRelativeToWorkspaceRoot}/${getLockFileName(packageManager)}`,\n lockFile,\n {\n encoding: 'utf-8',\n }\n );\n }\n // For buildable libs, copy package.json if it exists.\n else if (\n options.generatePackageJson !== false &&\n !existsSync(distPackageJson) &&\n existsSync(libraryPackageJson) &&\n rootPackageJson !== libraryPackageJson\n ) {\n await copyAssets(\n {\n outputPath: outDirRelativeToWorkspaceRoot,\n assets: [\n {\n input: projectRoot,\n output: '.',\n glob: 'package.json',\n },\n ],\n },\n context\n );\n }\n\n const iterable = createAsyncIterable<{\n success: boolean;\n outfile?: string;\n }>(({ next, done }) => {\n if ('on' in watcherOrOutput) {\n let success = true;\n watcherOrOutput.on('event', (event) => {\n if (event.code === 'START') {\n success = true;\n } else if (event.code === 'ERROR') {\n success = false;\n } else if (event.code === 'END') {\n next({ success });\n }\n // result must be closed when present.\n // see https://rollupjs.org/guide/en/#rollupwatch\n if ('result' in event && event.result) {\n event.result.close();\n }\n });\n } else {\n const output =\n watcherOrOutput?.['output'] || watcherOrOutput?.[0]?.output;\n const fileName = output?.[0]?.fileName || 'main.cjs';\n const outfile = resolve(outDirRelativeToWorkspaceRoot, fileName);\n next({ success: true, outfile });\n done();\n }\n });\n iterables.push(iterable);\n }\n return yield* combineAsyncIterables(iterables.shift(), ...(iterables ?? []));\n}\n\nexport async function getBuildExtraArgs(\n options: ViteBuildExecutorOptions\n): Promise<{\n // vite BuildOptions\n buildOptions: Record<string, unknown>;\n otherOptions: Record<string, any>;\n}> {\n // support passing extra args to vite cli\n const schema = await import('./schema.json');\n const extraArgs = {};\n for (const key of Object.keys(options)) {\n if (!schema.properties[key]) {\n extraArgs[key] = options[key];\n }\n }\n\n const buildOptions = {};\n const buildSchemaKeys = [\n 'target',\n 'polyfillModulePreload',\n 'modulePreload',\n 'outDir',\n 'assetsDir',\n 'assetsInlineLimit',\n 'cssCodeSplit',\n 'cssTarget',\n 'cssMinify',\n 'sourcemap',\n 'minify',\n 'terserOptions',\n 'rollupOptions',\n 'commonjsOptions',\n 'dynamicImportVarsOptions',\n 'write',\n 'emptyOutDir',\n 'copyPublicDir',\n 'manifest',\n 'lib',\n 'ssr',\n 'ssrManifest',\n 'ssrEmitAssets',\n 'reportCompressedSize',\n 'chunkSizeWarningLimit',\n 'watch',\n ];\n const otherOptions = {};\n for (const key of Object.keys(extraArgs)) {\n if (buildSchemaKeys.includes(key)) {\n buildOptions[key] = extraArgs[key];\n } else {\n otherOptions[key] = extraArgs[key];\n }\n }\n\n buildOptions['watch'] = options.watch ?? undefined;\n\n return {\n buildOptions,\n otherOptions,\n };\n}\n\nexport default viteBuildExecutor;\n"],"names":["getBuildExtraArgs","viteBuildExecutor","options","context","resolved","process","env","VITE_CJS_IGNORE_WARNING","mergeConfig","build","resolveConfig","createBuilder","loadViteDynamicImport","projectRoot","projectsConfigurations","projects","projectName","root","tsConfigForBuild","createBuildableTsConfig","viteConfigPath","normalizeViteConfigFilePath","configFile","cwd","relative","joinPathFragments","buildOptions","otherOptions","defaultMode","mode","NODE_ENV","outDir","offsetFromRoot","outputPath","buildConfig","skipTypeCheck","isUsingTsSolutionSetup","validateTypes","workspaceRoot","tsconfig","isVueProject","Boolean","plugins","find","plugin","name","builder","undefined","useEnvironmentsApi","inlineConfig","environments","iterables","Object","values","config","watcherOrOutput","libraryPackageJson","resolve","rootPackageJson","absoluteOutDir","outDirRelativeToWorkspaceRoot","distPackageJson","generatePackageJson","builtPackageJson","projectGraph","nodes","type","logger","warn","stripIndents","createPackageJson","target","targetName","isProduction","includeDevDependenciesInPackageJson","skipOverrides","skipPackageManager","writeJsonFile","packageManager","detectPackageManager","lockFile","createLockFile","writeFileSync","getLockFileName","encoding","existsSync","copyAssets","assets","input","output","glob","iterable","createAsyncIterable","next","done","success","on","event","code","result","close","fileName","outfile","push","combineAsyncIterables","shift","schema","extraArgs","key","keys","properties","buildSchemaKeys","includes","watch"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -114,7 +114,8 @@ async function viteConfigurationGeneratorInternal(tree, schema) {
114
114
  ],
115
115
  plugins: [
116
116
  'react()'
117
- ]
117
+ ],
118
+ port: schema.port
118
119
  }, false, undefined);
119
120
  } else {
120
121
  (0, _generatorutils.createOrEditViteConfig)(tree, schema, false, projectAlreadyHasViteTargets);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/generators/configuration/configuration.ts"],"sourcesContent":["import {\n formatFiles,\n GeneratorCallback,\n joinPathFragments,\n readJson,\n readNxJson,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n updateJson,\n writeJson,\n} from '@nx/devkit';\nimport {\n getUpdatedPackageJsonContent,\n initGenerator as jsInitGenerator,\n} from '@nx/js';\nimport { getImportPath } from '@nx/js/src/utils/get-import-path';\nimport {\n getProjectType,\n isUsingTsSolutionSetup,\n} from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { join } from 'node:path/posix';\nimport type { PackageJson } from 'nx/src/utils/package-json';\nimport { ensureDependencies } from '../../utils/ensure-dependencies';\nimport {\n addBuildTarget,\n addPreviewTarget,\n addServeTarget,\n createOrEditViteConfig,\n TargetFlags,\n} from '../../utils/generator-utils';\nimport initGenerator from '../init/init';\nimport vitestGenerator from '../vitest/vitest-generator';\nimport { convertNonVite } from './lib/convert-non-vite';\nimport { ViteConfigurationGeneratorSchema } from './schema';\n\nexport function viteConfigurationGenerator(\n host: Tree,\n schema: ViteConfigurationGeneratorSchema\n) {\n return viteConfigurationGeneratorInternal(host, {\n addPlugin: false,\n ...schema,\n });\n}\n\nexport async function viteConfigurationGeneratorInternal(\n tree: Tree,\n schema: ViteConfigurationGeneratorSchema\n) {\n const tasks: GeneratorCallback[] = [];\n\n const projectConfig = readProjectConfiguration(tree, schema.project);\n const { targets, root: projectRoot } = projectConfig;\n\n const projectType = getProjectType(\n tree,\n projectConfig.root,\n schema.projectType ?? projectConfig.projectType\n );\n\n schema.includeLib ??= projectType === 'library';\n\n // Setting default to jsdom since it is the most common use case (React, Web).\n // The @nx/js:lib generator specifically sets this to node to be more generic.\n schema.testEnvironment ??= 'jsdom';\n\n /**\n * This is for when we are converting an existing project\n * to use the vite executors.\n */\n let projectAlreadyHasViteTargets: TargetFlags = {};\n\n if (!schema.newProject) {\n await convertNonVite(tree, schema, projectRoot, projectType, targets);\n }\n\n const jsInitTask = await jsInitGenerator(tree, {\n ...schema,\n skipFormat: true,\n tsConfigName: projectRoot === '.' ? 'tsconfig.json' : 'tsconfig.base.json',\n });\n tasks.push(jsInitTask);\n const initTask = await initGenerator(tree, {\n ...schema,\n projectRoot,\n skipFormat: true,\n });\n tasks.push(initTask);\n tasks.push(ensureDependencies(tree, schema));\n\n const nxJson = readNxJson(tree);\n const addPluginDefault =\n process.env.NX_ADD_PLUGINS !== 'false' &&\n nxJson.useInferencePlugins !== false;\n schema.addPlugin ??= addPluginDefault;\n\n const hasPlugin = nxJson.plugins?.some((p) =>\n typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin'\n );\n\n if (!hasPlugin) {\n if (!projectAlreadyHasViteTargets.build) {\n addBuildTarget(tree, schema, 'build');\n }\n\n if (!schema.includeLib) {\n if (!projectAlreadyHasViteTargets.serve) {\n addServeTarget(tree, schema, 'serve');\n }\n if (!projectAlreadyHasViteTargets.preview) {\n addPreviewTarget(tree, schema, 'preview');\n }\n }\n }\n if (projectType === 'library') {\n // update tsconfig.lib.json to include vite/client\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.lib.json'),\n (json) => {\n json.compilerOptions ??= {};\n json.compilerOptions.types ??= [];\n if (!json.compilerOptions.types.includes('vite/client')) {\n json.compilerOptions.types.push('vite/client');\n }\n return json;\n }\n );\n }\n\n if (!schema.newProject) {\n // We are converting existing project to use Vite\n if (schema.uiFramework === 'react') {\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: schema.includeLib,\n includeVitest: schema.includeVitest,\n inSourceTests: schema.inSourceTests,\n rollupOptionsExternal: [\n \"'react'\",\n \"'react-dom'\",\n \"'react/jsx-runtime'\",\n ],\n imports: [\n schema.compiler === 'swc'\n ? `import react from '@vitejs/plugin-react-swc'`\n : `import react from '@vitejs/plugin-react'`,\n ],\n plugins: ['react()'],\n },\n false,\n undefined\n );\n } else {\n createOrEditViteConfig(tree, schema, false, projectAlreadyHasViteTargets);\n }\n }\n\n if (schema.includeVitest) {\n const vitestTask = await vitestGenerator(tree, {\n project: schema.project,\n uiFramework: schema.uiFramework,\n inSourceTests: schema.inSourceTests,\n coverageProvider: 'v8',\n skipViteConfig: true,\n testTarget: 'test',\n skipFormat: true,\n addPlugin: schema.addPlugin,\n compiler: schema.compiler,\n projectType,\n });\n tasks.push(vitestTask);\n }\n\n if (isUsingTsSolutionSetup(tree)) {\n updatePackageJson(tree, schema, projectType);\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nexport default viteConfigurationGenerator;\n\nfunction updatePackageJson(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n projectType: 'application' | 'library'\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n const packageJsonPath = join(project.root, 'package.json');\n let packageJson: PackageJson;\n if (tree.exists(packageJsonPath)) {\n packageJson = readJson(tree, packageJsonPath);\n } else {\n packageJson = {\n name: getImportPath(tree, options.project),\n version: '0.0.1',\n };\n if (getProjectType(tree, project.root, projectType) === 'application') {\n packageJson.private = true;\n }\n }\n\n if (projectType === 'library') {\n // we always write/override the vite and project config with some set values,\n // so we can rely on them\n const main = join(project.root, 'src/index.ts');\n // we configure the dts plugin with the entryRoot set to `src`\n const rootDir = join(project.root, 'src');\n const outputPath = joinPathFragments(project.root, 'dist');\n\n // the file must exist in the TS solution setup, which is the only case this\n // function is called\n const tsconfigBase = readJson(tree, 'tsconfig.base.json');\n\n packageJson = getUpdatedPackageJsonContent(packageJson, {\n main,\n outputPath,\n projectRoot: project.root,\n rootDir,\n generateExportsField: true,\n packageJsonPath,\n format: ['esm'],\n skipDevelopmentExports:\n !tsconfigBase.compilerOptions?.customConditions?.includes(\n 'development'\n ),\n });\n }\n\n writeJson(tree, packageJsonPath, packageJson);\n}\n"],"names":["viteConfigurationGenerator","viteConfigurationGeneratorInternal","host","schema","addPlugin","tree","nxJson","tasks","projectConfig","readProjectConfiguration","project","targets","root","projectRoot","projectType","getProjectType","includeLib","testEnvironment","projectAlreadyHasViteTargets","newProject","convertNonVite","jsInitTask","jsInitGenerator","skipFormat","tsConfigName","push","initTask","initGenerator","ensureDependencies","readNxJson","addPluginDefault","process","env","NX_ADD_PLUGINS","useInferencePlugins","hasPlugin","plugins","some","p","plugin","build","addBuildTarget","serve","addServeTarget","preview","addPreviewTarget","updateJson","joinPathFragments","json","compilerOptions","types","includes","uiFramework","createOrEditViteConfig","includeVitest","inSourceTests","rollupOptionsExternal","imports","compiler","undefined","vitestTask","vitestGenerator","coverageProvider","skipViteConfig","testTarget","isUsingTsSolutionSetup","updatePackageJson","formatFiles","runTasksInSerial","options","packageJsonPath","join","packageJson","exists","readJson","name","getImportPath","version","private","tsconfigBase","main","rootDir","outputPath","getUpdatedPackageJsonContent","generateExportsField","format","skipDevelopmentExports","customConditions","writeJson"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/generators/configuration/configuration.ts"],"sourcesContent":["import {\n formatFiles,\n GeneratorCallback,\n joinPathFragments,\n readJson,\n readNxJson,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n updateJson,\n writeJson,\n} from '@nx/devkit';\nimport {\n getUpdatedPackageJsonContent,\n initGenerator as jsInitGenerator,\n} from '@nx/js';\nimport { getImportPath } from '@nx/js/src/utils/get-import-path';\nimport {\n getProjectType,\n isUsingTsSolutionSetup,\n} from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { join } from 'node:path/posix';\nimport type { PackageJson } from 'nx/src/utils/package-json';\nimport { ensureDependencies } from '../../utils/ensure-dependencies';\nimport {\n addBuildTarget,\n addPreviewTarget,\n addServeTarget,\n createOrEditViteConfig,\n TargetFlags,\n} from '../../utils/generator-utils';\nimport initGenerator from '../init/init';\nimport vitestGenerator from '../vitest/vitest-generator';\nimport { convertNonVite } from './lib/convert-non-vite';\nimport { ViteConfigurationGeneratorSchema } from './schema';\n\nexport function viteConfigurationGenerator(\n host: Tree,\n schema: ViteConfigurationGeneratorSchema\n) {\n return viteConfigurationGeneratorInternal(host, {\n addPlugin: false,\n ...schema,\n });\n}\n\nexport async function viteConfigurationGeneratorInternal(\n tree: Tree,\n schema: ViteConfigurationGeneratorSchema\n) {\n const tasks: GeneratorCallback[] = [];\n\n const projectConfig = readProjectConfiguration(tree, schema.project);\n const { targets, root: projectRoot } = projectConfig;\n\n const projectType = getProjectType(\n tree,\n projectConfig.root,\n schema.projectType ?? projectConfig.projectType\n );\n\n schema.includeLib ??= projectType === 'library';\n\n // Setting default to jsdom since it is the most common use case (React, Web).\n // The @nx/js:lib generator specifically sets this to node to be more generic.\n schema.testEnvironment ??= 'jsdom';\n\n /**\n * This is for when we are converting an existing project\n * to use the vite executors.\n */\n let projectAlreadyHasViteTargets: TargetFlags = {};\n\n if (!schema.newProject) {\n await convertNonVite(tree, schema, projectRoot, projectType, targets);\n }\n\n const jsInitTask = await jsInitGenerator(tree, {\n ...schema,\n skipFormat: true,\n tsConfigName: projectRoot === '.' ? 'tsconfig.json' : 'tsconfig.base.json',\n });\n tasks.push(jsInitTask);\n const initTask = await initGenerator(tree, {\n ...schema,\n projectRoot,\n skipFormat: true,\n });\n tasks.push(initTask);\n tasks.push(ensureDependencies(tree, schema));\n\n const nxJson = readNxJson(tree);\n const addPluginDefault =\n process.env.NX_ADD_PLUGINS !== 'false' &&\n nxJson.useInferencePlugins !== false;\n schema.addPlugin ??= addPluginDefault;\n\n const hasPlugin = nxJson.plugins?.some((p) =>\n typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin'\n );\n\n if (!hasPlugin) {\n if (!projectAlreadyHasViteTargets.build) {\n addBuildTarget(tree, schema, 'build');\n }\n\n if (!schema.includeLib) {\n if (!projectAlreadyHasViteTargets.serve) {\n addServeTarget(tree, schema, 'serve');\n }\n if (!projectAlreadyHasViteTargets.preview) {\n addPreviewTarget(tree, schema, 'preview');\n }\n }\n }\n if (projectType === 'library') {\n // update tsconfig.lib.json to include vite/client\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.lib.json'),\n (json) => {\n json.compilerOptions ??= {};\n json.compilerOptions.types ??= [];\n if (!json.compilerOptions.types.includes('vite/client')) {\n json.compilerOptions.types.push('vite/client');\n }\n return json;\n }\n );\n }\n\n if (!schema.newProject) {\n // We are converting existing project to use Vite\n if (schema.uiFramework === 'react') {\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: schema.includeLib,\n includeVitest: schema.includeVitest,\n inSourceTests: schema.inSourceTests,\n rollupOptionsExternal: [\n \"'react'\",\n \"'react-dom'\",\n \"'react/jsx-runtime'\",\n ],\n imports: [\n schema.compiler === 'swc'\n ? `import react from '@vitejs/plugin-react-swc'`\n : `import react from '@vitejs/plugin-react'`,\n ],\n plugins: ['react()'],\n port: schema.port,\n },\n false,\n undefined\n );\n } else {\n createOrEditViteConfig(tree, schema, false, projectAlreadyHasViteTargets);\n }\n }\n\n if (schema.includeVitest) {\n const vitestTask = await vitestGenerator(tree, {\n project: schema.project,\n uiFramework: schema.uiFramework,\n inSourceTests: schema.inSourceTests,\n coverageProvider: 'v8',\n skipViteConfig: true,\n testTarget: 'test',\n skipFormat: true,\n addPlugin: schema.addPlugin,\n compiler: schema.compiler,\n projectType,\n });\n tasks.push(vitestTask);\n }\n\n if (isUsingTsSolutionSetup(tree)) {\n updatePackageJson(tree, schema, projectType);\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nexport default viteConfigurationGenerator;\n\nfunction updatePackageJson(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n projectType: 'application' | 'library'\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n const packageJsonPath = join(project.root, 'package.json');\n let packageJson: PackageJson;\n if (tree.exists(packageJsonPath)) {\n packageJson = readJson(tree, packageJsonPath);\n } else {\n packageJson = {\n name: getImportPath(tree, options.project),\n version: '0.0.1',\n };\n if (getProjectType(tree, project.root, projectType) === 'application') {\n packageJson.private = true;\n }\n }\n\n if (projectType === 'library') {\n // we always write/override the vite and project config with some set values,\n // so we can rely on them\n const main = join(project.root, 'src/index.ts');\n // we configure the dts plugin with the entryRoot set to `src`\n const rootDir = join(project.root, 'src');\n const outputPath = joinPathFragments(project.root, 'dist');\n\n // the file must exist in the TS solution setup, which is the only case this\n // function is called\n const tsconfigBase = readJson(tree, 'tsconfig.base.json');\n\n packageJson = getUpdatedPackageJsonContent(packageJson, {\n main,\n outputPath,\n projectRoot: project.root,\n rootDir,\n generateExportsField: true,\n packageJsonPath,\n format: ['esm'],\n skipDevelopmentExports:\n !tsconfigBase.compilerOptions?.customConditions?.includes(\n 'development'\n ),\n });\n }\n\n writeJson(tree, packageJsonPath, packageJson);\n}\n"],"names":["viteConfigurationGenerator","viteConfigurationGeneratorInternal","host","schema","addPlugin","tree","nxJson","tasks","projectConfig","readProjectConfiguration","project","targets","root","projectRoot","projectType","getProjectType","includeLib","testEnvironment","projectAlreadyHasViteTargets","newProject","convertNonVite","jsInitTask","jsInitGenerator","skipFormat","tsConfigName","push","initTask","initGenerator","ensureDependencies","readNxJson","addPluginDefault","process","env","NX_ADD_PLUGINS","useInferencePlugins","hasPlugin","plugins","some","p","plugin","build","addBuildTarget","serve","addServeTarget","preview","addPreviewTarget","updateJson","joinPathFragments","json","compilerOptions","types","includes","uiFramework","createOrEditViteConfig","includeVitest","inSourceTests","rollupOptionsExternal","imports","compiler","port","undefined","vitestTask","vitestGenerator","coverageProvider","skipViteConfig","testTarget","isUsingTsSolutionSetup","updatePackageJson","formatFiles","runTasksInSerial","options","packageJsonPath","join","packageJson","exists","readJson","name","getImportPath","version","private","tsconfigBase","main","rootDir","outputPath","getUpdatedPackageJsonContent","generateExportsField","format","skipDevelopmentExports","customConditions","writeJson"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -8,7 +8,9 @@ export interface ViteConfigurationGeneratorSchema {
8
8
  includeLib?: boolean;
9
9
  skipFormat?: boolean;
10
10
  testEnvironment?: 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string;
11
+ port?: number;
11
12
  // Internal options
12
13
  addPlugin?: boolean;
13
14
  projectType?: 'application' | 'library';
15
+ previewPort?: number;
14
16
  }
@@ -55,6 +55,10 @@
55
55
  "type": "string",
56
56
  "enum": ["node", "jsdom", "happy-dom", "edge-runtime"],
57
57
  "default": "jsdom"
58
+ },
59
+ "port": {
60
+ "type": "number",
61
+ "description": "The port to use for the development server"
58
62
  }
59
63
  },
60
64
  "examplesFile": "../../../docs/configuration-examples.md"
@@ -191,12 +191,16 @@ async function buildViteTargets(configFilePath, projectRoot, options, tsConfigFi
191
191
  }
192
192
  }
193
193
  if (tsConfigFiles.length) {
194
+ var _viteBuildConfig_plugins;
194
195
  var _find;
195
196
  const tsConfigToUse = (_find = [
196
197
  'tsconfig.app.json',
197
198
  'tsconfig.lib.json',
198
199
  'tsconfig.json'
199
200
  ].find((t)=>tsConfigFiles.includes(t))) != null ? _find : tsConfigFiles[0];
201
+ // Check if the project uses Vue plugin
202
+ const hasVuePlugin = (_viteBuildConfig_plugins = viteBuildConfig.plugins) == null ? void 0 : _viteBuildConfig_plugins.some((p)=>p.name === 'vite:vue');
203
+ const typeCheckCommand = hasVuePlugin ? 'vue-tsc' : 'tsc';
200
204
  targets[options.typecheckTargetName] = {
201
205
  cache: true,
202
206
  inputs: [
@@ -208,22 +212,28 @@ async function buildViteTargets(configFilePath, projectRoot, options, tsConfigFi
208
212
  '^default'
209
213
  ],
210
214
  {
211
- externalDependencies: [
215
+ externalDependencies: hasVuePlugin ? [
216
+ 'vue-tsc',
217
+ 'typescript'
218
+ ] : [
212
219
  'typescript'
213
220
  ]
214
221
  }
215
222
  ],
216
- command: isUsingTsSolutionSetup ? `tsc --build --emitDeclarationOnly` : `tsc --noEmit -p ${tsConfigToUse}`,
223
+ command: isUsingTsSolutionSetup ? `${typeCheckCommand} --build --emitDeclarationOnly` : `${typeCheckCommand} --noEmit -p ${tsConfigToUse}`,
217
224
  options: {
218
225
  cwd: (0, _devkit.joinPathFragments)(projectRoot)
219
226
  },
220
227
  metadata: {
221
228
  description: `Runs type-checking for the project.`,
222
- technologies: [
229
+ technologies: hasVuePlugin ? [
230
+ 'typescript',
231
+ 'vue'
232
+ ] : [
223
233
  'typescript'
224
234
  ],
225
235
  help: {
226
- command: isUsingTsSolutionSetup ? `${pmc.exec} tsc --build --help` : `${pmc.exec} tsc -p ${tsConfigToUse} --help`,
236
+ command: isUsingTsSolutionSetup ? `${pmc.exec} ${typeCheckCommand} --build --help` : `${pmc.exec} ${typeCheckCommand} -p ${tsConfigToUse} --help`,
227
237
  example: isUsingTsSolutionSetup ? {
228
238
  args: [
229
239
  '--force'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/vite/src/plugins/plugin.ts"],"sourcesContent":["import {\n CreateDependencies,\n CreateNodes,\n CreateNodesContext,\n CreateNodesContextV2,\n createNodesFromFiles,\n CreateNodesV2,\n detectPackageManager,\n getPackageManagerCommand,\n joinPathFragments,\n logger,\n ProjectConfiguration,\n readJsonFile,\n TargetConfiguration,\n writeJsonFile,\n} from '@nx/devkit';\nimport { dirname, isAbsolute, join, relative } from 'path';\nimport { getNamedInputs } from '@nx/devkit/src/utils/get-named-inputs';\nimport { existsSync, readdirSync } from 'fs';\nimport {\n calculateHashesForCreateNodes,\n calculateHashForCreateNodes,\n} from '@nx/devkit/src/utils/calculate-hash-for-create-nodes';\nimport { workspaceDataDirectory } from 'nx/src/utils/cache-directory';\nimport { getLockFileName } from '@nx/js';\nimport { loadViteDynamicImport } from '../utils/executor-utils';\nimport { hashObject } from 'nx/src/hasher/file-hasher';\nimport picomatch = require('picomatch');\nimport { isUsingTsSolutionSetup as _isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { addBuildAndWatchDepsTargets } from '@nx/js/src/plugins/typescript/util';\n\nconst pmc = getPackageManagerCommand();\n\nexport interface VitePluginOptions {\n buildTargetName?: string;\n testTargetName?: string;\n /**\n * @deprecated Use devTargetName instead. This option will be removed in Nx 22.\n */\n serveTargetName?: string;\n devTargetName?: string;\n previewTargetName?: string;\n serveStaticTargetName?: string;\n typecheckTargetName?: string;\n watchDepsTargetName?: string;\n buildDepsTargetName?: string;\n}\n\ntype ViteTargets = Pick<\n ProjectConfiguration,\n 'targets' | 'metadata' | 'projectType'\n>;\n\nfunction readTargetsCache(cachePath: string): Record<string, ViteTargets> {\n return process.env.NX_CACHE_PROJECT_GRAPH !== 'false' && existsSync(cachePath)\n ? readJsonFile(cachePath)\n : {};\n}\n\nfunction writeTargetsToCache(cachePath, results?: Record<string, ViteTargets>) {\n writeJsonFile(cachePath, results);\n}\n\n/**\n * @deprecated The 'createDependencies' function is now a no-op. This functionality is included in 'createNodesV2'.\n */\nexport const createDependencies: CreateDependencies = () => {\n return [];\n};\n\nconst viteVitestConfigGlob = '**/{vite,vitest}.config.{js,ts,mjs,mts,cjs,cts}';\n\nexport const createNodesV2: CreateNodesV2<VitePluginOptions> = [\n viteVitestConfigGlob,\n async (configFilePaths, options, context) => {\n const optionsHash = hashObject(options);\n const normalizedOptions = normalizeOptions(options);\n const cachePath = join(workspaceDataDirectory, `vite-${optionsHash}.hash`);\n const targetsCache = readTargetsCache(cachePath);\n const isUsingTsSolutionSetup = _isUsingTsSolutionSetup();\n\n const { roots: projectRoots, configFiles: validConfigFiles } =\n configFilePaths.reduce(\n (acc, configFile) => {\n const potentialRoot = dirname(configFile);\n if (checkIfConfigFileShouldBeProject(potentialRoot, context)) {\n acc.roots.push(potentialRoot);\n acc.configFiles.push(configFile);\n }\n return acc;\n },\n {\n roots: [],\n configFiles: [],\n } as {\n roots: string[];\n configFiles: string[];\n }\n );\n\n const lockfile = getLockFileName(\n detectPackageManager(context.workspaceRoot)\n );\n const hashes = await calculateHashesForCreateNodes(\n projectRoots,\n { ...normalizedOptions, isUsingTsSolutionSetup },\n context,\n projectRoots.map((r) => [lockfile])\n );\n\n try {\n return await createNodesFromFiles(\n async (configFile, _, context, idx) => {\n const projectRoot = dirname(configFile);\n // Do not create a project if package.json and project.json isn't there.\n const siblingFiles = readdirSync(\n join(context.workspaceRoot, projectRoot)\n );\n\n const tsConfigFiles =\n siblingFiles.filter((p) =>\n picomatch('tsconfig*{.json,.*.json}')(p)\n ) ?? [];\n\n const hasReactRouterConfig = siblingFiles.some((configFile) => {\n const parts = configFile.split('.');\n return (\n parts[0] === 'react-router' &&\n parts[1] === 'config' &&\n parts.length > 2\n );\n });\n\n // results from vitest.config.js will be different from results of vite.config.js\n // but the hash will be the same because it is based on the files under the project root.\n // Adding the config file path to the hash ensures that the final hash value is different\n // for different config files.\n const hash = hashes[idx] + configFile;\n const { projectType, metadata, targets } = (targetsCache[hash] ??=\n await buildViteTargets(\n configFile,\n projectRoot,\n normalizedOptions,\n tsConfigFiles,\n hasReactRouterConfig,\n isUsingTsSolutionSetup,\n context\n ));\n\n const project: ProjectConfiguration = {\n root: projectRoot,\n targets,\n metadata,\n };\n\n // If project is buildable, then the project type.\n // If it is not buildable, then leave it to other plugins/project.json to set the project type.\n if (project.targets[normalizedOptions.buildTargetName]) {\n project.projectType = projectType;\n }\n\n return {\n projects: {\n [projectRoot]: project,\n },\n };\n },\n validConfigFiles,\n options,\n context\n );\n } finally {\n writeTargetsToCache(cachePath, targetsCache);\n }\n },\n];\n\nexport const createNodes: CreateNodes<VitePluginOptions> = [\n viteVitestConfigGlob,\n async (configFilePath, options, context) => {\n logger.warn(\n '`createNodes` is deprecated. Update your plugin to utilize createNodesV2 instead. In Nx 20, this will change to the createNodesV2 API.'\n );\n const projectRoot = dirname(configFilePath);\n // Do not create a project if package.json and project.json isn't there.\n const siblingFiles = readdirSync(join(context.workspaceRoot, projectRoot));\n if (\n !siblingFiles.includes('package.json') &&\n !siblingFiles.includes('project.json')\n ) {\n return {};\n }\n\n const tsConfigFiles =\n siblingFiles.filter((p) => picomatch('tsconfig*{.json,.*.json}')(p)) ??\n [];\n\n const hasReactRouterConfig = siblingFiles.some((configFile) => {\n const parts = configFile.split('.');\n return (\n parts[0] === 'react-router' && parts[1] === 'config' && parts.length > 2\n );\n });\n\n const normalizedOptions = normalizeOptions(options);\n\n const isUsingTsSolutionSetup = _isUsingTsSolutionSetup();\n\n const { projectType, metadata, targets } = await buildViteTargets(\n configFilePath,\n projectRoot,\n normalizedOptions,\n tsConfigFiles,\n hasReactRouterConfig,\n isUsingTsSolutionSetup,\n context\n );\n const project: ProjectConfiguration = {\n root: projectRoot,\n targets,\n metadata,\n };\n\n // If project is buildable, then the project type.\n // If it is not buildable, then leave it to other plugins/project.json to set the project type.\n if (project.targets[normalizedOptions.buildTargetName]) {\n project.projectType = projectType;\n }\n\n return {\n projects: {\n [projectRoot]: project,\n },\n };\n },\n];\n\nasync function buildViteTargets(\n configFilePath: string,\n projectRoot: string,\n options: VitePluginOptions,\n tsConfigFiles: string[],\n hasReactRouterConfig: boolean,\n isUsingTsSolutionSetup: boolean,\n context: CreateNodesContext\n): Promise<ViteTargets> {\n const absoluteConfigFilePath = joinPathFragments(\n context.workspaceRoot,\n configFilePath\n );\n // Workaround for the `build$3 is not a function` error that we sometimes see in agents.\n // This should be removed later once we address the issue properly\n try {\n const importEsbuild = () => new Function('return import(\"esbuild\")')();\n await importEsbuild();\n } catch {\n // do nothing\n }\n const { resolveConfig } = await loadViteDynamicImport();\n const viteBuildConfig = await resolveConfig(\n {\n configFile: absoluteConfigFilePath,\n mode: 'development',\n },\n 'build'\n );\n\n const { buildOutputs, testOutputs, hasTest, isBuildable, hasServeConfig } =\n getOutputs(viteBuildConfig, projectRoot, context.workspaceRoot);\n\n const namedInputs = getNamedInputs(projectRoot, context);\n\n const targets: Record<string, TargetConfiguration> = {};\n\n // if file is vitest.config or vite.config has definition for test, create target for test\n if (configFilePath.includes('vitest.config') || hasTest) {\n targets[options.testTargetName] = await testTarget(\n namedInputs,\n testOutputs,\n projectRoot\n );\n }\n\n if (hasReactRouterConfig) {\n // If we have a react-router config, we can skip the rest of the targets\n return { targets, metadata: {}, projectType: 'application' };\n }\n // If file is not vitest.config and buildable, create targets for build, serve, preview and serve-static\n const hasRemixPlugin =\n viteBuildConfig.plugins &&\n viteBuildConfig.plugins.some((p) => p.name === 'remix');\n if (\n !configFilePath.includes('vitest.config') &&\n !hasRemixPlugin &&\n isBuildable\n ) {\n targets[options.buildTargetName] = await buildTarget(\n options.buildTargetName,\n namedInputs,\n buildOutputs,\n projectRoot,\n isUsingTsSolutionSetup\n );\n\n // If running in library mode, then there is nothing to serve.\n if (!viteBuildConfig.build?.lib || hasServeConfig) {\n const devTarget = serveTarget(projectRoot, isUsingTsSolutionSetup);\n\n targets[options.serveTargetName] = {\n ...devTarget,\n metadata: {\n ...devTarget.metadata,\n deprecated:\n 'Use devTargetName instead. This option will be removed in Nx 22.',\n },\n };\n targets[options.devTargetName] = devTarget;\n targets[options.previewTargetName] = previewTarget(\n projectRoot,\n options.buildTargetName\n );\n targets[options.serveStaticTargetName] = serveStaticTarget(\n options,\n isUsingTsSolutionSetup\n );\n }\n }\n\n if (tsConfigFiles.length) {\n const tsConfigToUse =\n ['tsconfig.app.json', 'tsconfig.lib.json', 'tsconfig.json'].find((t) =>\n tsConfigFiles.includes(t)\n ) ?? tsConfigFiles[0];\n targets[options.typecheckTargetName] = {\n cache: true,\n inputs: [\n ...('production' in namedInputs\n ? ['production', '^production']\n : ['default', '^default']),\n { externalDependencies: ['typescript'] },\n ],\n command: isUsingTsSolutionSetup\n ? `tsc --build --emitDeclarationOnly`\n : `tsc --noEmit -p ${tsConfigToUse}`,\n options: { cwd: joinPathFragments(projectRoot) },\n metadata: {\n description: `Runs type-checking for the project.`,\n technologies: ['typescript'],\n help: {\n command: isUsingTsSolutionSetup\n ? `${pmc.exec} tsc --build --help`\n : `${pmc.exec} tsc -p ${tsConfigToUse} --help`,\n example: isUsingTsSolutionSetup\n ? { args: ['--force'] }\n : { options: { noEmit: true } },\n },\n },\n };\n\n if (isUsingTsSolutionSetup) {\n targets[options.typecheckTargetName].dependsOn = [\n `^${options.typecheckTargetName}`,\n ];\n targets[options.typecheckTargetName].syncGenerators = [\n '@nx/js:typescript-sync',\n ];\n }\n }\n\n addBuildAndWatchDepsTargets(\n context.workspaceRoot,\n projectRoot,\n targets,\n options,\n pmc\n );\n\n const metadata = {};\n return {\n targets,\n metadata,\n projectType: viteBuildConfig.build?.lib ? 'library' : 'application',\n };\n}\n\nasync function buildTarget(\n buildTargetName: string,\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string,\n isUsingTsSolutionSetup: boolean\n) {\n const buildTarget: TargetConfiguration = {\n command: `vite build`,\n options: { cwd: joinPathFragments(projectRoot) },\n cache: true,\n dependsOn: [`^${buildTargetName}`],\n inputs: [\n ...('production' in namedInputs\n ? ['production', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vite'],\n },\n ],\n outputs,\n metadata: {\n technologies: ['vite'],\n description: `Run Vite build`,\n help: {\n command: `${pmc.exec} vite build --help`,\n example: {\n options: {\n sourcemap: true,\n manifest: 'manifest.json',\n },\n },\n },\n },\n };\n\n if (isUsingTsSolutionSetup) {\n buildTarget.syncGenerators = ['@nx/js:typescript-sync'];\n }\n\n return buildTarget;\n}\n\nfunction serveTarget(projectRoot: string, isUsingTsSolutionSetup: boolean) {\n const targetConfig: TargetConfiguration = {\n continuous: true,\n command: `vite`,\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n metadata: {\n technologies: ['vite'],\n description: `Starts Vite dev server`,\n help: {\n command: `${pmc.exec} vite --help`,\n example: {\n options: {\n port: 3000,\n },\n },\n },\n },\n };\n\n if (isUsingTsSolutionSetup) {\n targetConfig.syncGenerators = ['@nx/js:typescript-sync'];\n }\n\n return targetConfig;\n}\n\nfunction previewTarget(projectRoot: string, buildTargetName) {\n const targetConfig: TargetConfiguration = {\n continuous: true,\n command: `vite preview`,\n dependsOn: [buildTargetName],\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n metadata: {\n technologies: ['vite'],\n description: `Locally preview Vite production build`,\n help: {\n command: `${pmc.exec} vite preview --help`,\n example: {\n options: {\n port: 3000,\n },\n },\n },\n },\n };\n\n return targetConfig;\n}\n\nasync function testTarget(\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string\n) {\n return {\n command: `vitest`,\n options: { cwd: joinPathFragments(projectRoot) },\n cache: true,\n inputs: [\n ...('production' in namedInputs\n ? ['default', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vitest'],\n },\n { env: 'CI' },\n ],\n outputs,\n metadata: {\n technologies: ['vite'],\n description: `Run Vite tests`,\n help: {\n command: `${pmc.exec} vitest --help`,\n example: {\n options: {\n bail: 1,\n coverage: true,\n },\n },\n },\n },\n };\n}\n\nfunction serveStaticTarget(\n options: VitePluginOptions,\n isUsingTsSolutionSetup: boolean\n) {\n const targetConfig: TargetConfiguration = {\n continuous: true,\n executor: '@nx/web:file-server',\n options: {\n buildTarget: `${options.buildTargetName}`,\n spa: true,\n },\n };\n\n if (isUsingTsSolutionSetup) {\n targetConfig.syncGenerators = ['@nx/js:typescript-sync'];\n }\n\n return targetConfig;\n}\n\nfunction getOutputs(\n viteBuildConfig: Record<string, any> | undefined,\n projectRoot: string,\n workspaceRoot: string\n): {\n buildOutputs: string[];\n testOutputs: string[];\n hasTest: boolean;\n isBuildable: boolean;\n hasServeConfig: boolean;\n} {\n const { build, test, server } = viteBuildConfig;\n\n const buildOutputPath = normalizeOutputPath(\n build?.outDir,\n projectRoot,\n workspaceRoot,\n 'dist'\n );\n\n const isBuildable =\n build?.lib ||\n build?.rollupOptions?.input ||\n existsSync(join(workspaceRoot, projectRoot, 'index.html'));\n\n const hasServeConfig = Boolean(server);\n\n const reportsDirectoryPath = normalizeOutputPath(\n test?.coverage?.reportsDirectory,\n projectRoot,\n workspaceRoot,\n 'coverage'\n );\n\n return {\n buildOutputs: [buildOutputPath],\n testOutputs: [reportsDirectoryPath],\n hasTest: !!test,\n isBuildable,\n hasServeConfig,\n };\n}\n\nfunction normalizeOutputPath(\n outputPath: string | undefined,\n projectRoot: string,\n workspaceRoot: string,\n path: 'coverage' | 'dist'\n): string | undefined {\n if (!outputPath) {\n if (projectRoot === '.') {\n return `{projectRoot}/${path}`;\n } else {\n return `{workspaceRoot}/${path}/{projectRoot}`;\n }\n } else {\n if (isAbsolute(outputPath)) {\n return `{workspaceRoot}/${relative(workspaceRoot, outputPath)}`;\n } else {\n if (outputPath.startsWith('..')) {\n return join('{workspaceRoot}', join(projectRoot, outputPath));\n } else {\n return join('{projectRoot}', outputPath);\n }\n }\n }\n}\n\nfunction normalizeOptions(options: VitePluginOptions): VitePluginOptions {\n options ??= {};\n options.buildTargetName ??= 'build';\n options.serveTargetName ??= 'serve';\n options.devTargetName ??= 'dev';\n options.previewTargetName ??= 'preview';\n options.testTargetName ??= 'test';\n options.serveStaticTargetName ??= 'serve-static';\n options.typecheckTargetName ??= 'typecheck';\n return options;\n}\n\nfunction checkIfConfigFileShouldBeProject(\n projectRoot: string,\n context: CreateNodesContext | CreateNodesContextV2\n): boolean {\n // Do not create a project if package.json and project.json isn't there.\n const siblingFiles = readdirSync(join(context.workspaceRoot, projectRoot));\n if (\n !siblingFiles.includes('package.json') &&\n !siblingFiles.includes('project.json')\n ) {\n return false;\n }\n\n return true;\n}\n"],"names":["createDependencies","createNodes","createNodesV2","picomatch","pmc","getPackageManagerCommand","readTargetsCache","cachePath","process","env","NX_CACHE_PROJECT_GRAPH","existsSync","readJsonFile","writeTargetsToCache","results","writeJsonFile","viteVitestConfigGlob","configFilePaths","options","context","optionsHash","hashObject","normalizedOptions","normalizeOptions","join","workspaceDataDirectory","targetsCache","isUsingTsSolutionSetup","_isUsingTsSolutionSetup","roots","projectRoots","configFiles","validConfigFiles","reduce","acc","configFile","potentialRoot","dirname","checkIfConfigFileShouldBeProject","push","lockfile","getLockFileName","detectPackageManager","workspaceRoot","hashes","calculateHashesForCreateNodes","map","r","createNodesFromFiles","_","idx","hash","projectRoot","siblingFiles","readdirSync","tsConfigFiles","filter","p","hasReactRouterConfig","some","parts","split","length","projectType","metadata","targets","buildViteTargets","project","root","buildTargetName","projects","configFilePath","logger","warn","includes","viteBuildConfig","absoluteConfigFilePath","joinPathFragments","importEsbuild","Function","resolveConfig","loadViteDynamicImport","mode","buildOutputs","testOutputs","hasTest","isBuildable","hasServeConfig","getOutputs","namedInputs","getNamedInputs","testTargetName","testTarget","hasRemixPlugin","plugins","name","buildTarget","build","lib","devTarget","serveTarget","serveTargetName","deprecated","devTargetName","previewTargetName","previewTarget","serveStaticTargetName","serveStaticTarget","tsConfigToUse","find","t","typecheckTargetName","cache","inputs","externalDependencies","command","cwd","description","technologies","help","exec","example","args","noEmit","dependsOn","syncGenerators","addBuildAndWatchDepsTargets","outputs","sourcemap","manifest","targetConfig","continuous","port","bail","coverage","executor","spa","test","server","buildOutputPath","normalizeOutputPath","outDir","rollupOptions","input","Boolean","reportsDirectoryPath","reportsDirectory","outputPath","path","isAbsolute","relative","startsWith"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../packages/vite/src/plugins/plugin.ts"],"sourcesContent":["import {\n CreateDependencies,\n CreateNodes,\n CreateNodesContext,\n CreateNodesContextV2,\n createNodesFromFiles,\n CreateNodesV2,\n detectPackageManager,\n getPackageManagerCommand,\n joinPathFragments,\n logger,\n ProjectConfiguration,\n readJsonFile,\n TargetConfiguration,\n writeJsonFile,\n} from '@nx/devkit';\nimport { dirname, isAbsolute, join, relative } from 'path';\nimport { getNamedInputs } from '@nx/devkit/src/utils/get-named-inputs';\nimport { existsSync, readdirSync } from 'fs';\nimport {\n calculateHashesForCreateNodes,\n calculateHashForCreateNodes,\n} from '@nx/devkit/src/utils/calculate-hash-for-create-nodes';\nimport { workspaceDataDirectory } from 'nx/src/utils/cache-directory';\nimport { getLockFileName } from '@nx/js';\nimport { loadViteDynamicImport } from '../utils/executor-utils';\nimport { hashObject } from 'nx/src/hasher/file-hasher';\nimport picomatch = require('picomatch');\nimport { isUsingTsSolutionSetup as _isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { addBuildAndWatchDepsTargets } from '@nx/js/src/plugins/typescript/util';\n\nconst pmc = getPackageManagerCommand();\n\nexport interface VitePluginOptions {\n buildTargetName?: string;\n testTargetName?: string;\n /**\n * @deprecated Use devTargetName instead. This option will be removed in Nx 22.\n */\n serveTargetName?: string;\n devTargetName?: string;\n previewTargetName?: string;\n serveStaticTargetName?: string;\n typecheckTargetName?: string;\n watchDepsTargetName?: string;\n buildDepsTargetName?: string;\n}\n\ntype ViteTargets = Pick<\n ProjectConfiguration,\n 'targets' | 'metadata' | 'projectType'\n>;\n\nfunction readTargetsCache(cachePath: string): Record<string, ViteTargets> {\n return process.env.NX_CACHE_PROJECT_GRAPH !== 'false' && existsSync(cachePath)\n ? readJsonFile(cachePath)\n : {};\n}\n\nfunction writeTargetsToCache(cachePath, results?: Record<string, ViteTargets>) {\n writeJsonFile(cachePath, results);\n}\n\n/**\n * @deprecated The 'createDependencies' function is now a no-op. This functionality is included in 'createNodesV2'.\n */\nexport const createDependencies: CreateDependencies = () => {\n return [];\n};\n\nconst viteVitestConfigGlob = '**/{vite,vitest}.config.{js,ts,mjs,mts,cjs,cts}';\n\nexport const createNodesV2: CreateNodesV2<VitePluginOptions> = [\n viteVitestConfigGlob,\n async (configFilePaths, options, context) => {\n const optionsHash = hashObject(options);\n const normalizedOptions = normalizeOptions(options);\n const cachePath = join(workspaceDataDirectory, `vite-${optionsHash}.hash`);\n const targetsCache = readTargetsCache(cachePath);\n const isUsingTsSolutionSetup = _isUsingTsSolutionSetup();\n\n const { roots: projectRoots, configFiles: validConfigFiles } =\n configFilePaths.reduce(\n (acc, configFile) => {\n const potentialRoot = dirname(configFile);\n if (checkIfConfigFileShouldBeProject(potentialRoot, context)) {\n acc.roots.push(potentialRoot);\n acc.configFiles.push(configFile);\n }\n return acc;\n },\n {\n roots: [],\n configFiles: [],\n } as {\n roots: string[];\n configFiles: string[];\n }\n );\n\n const lockfile = getLockFileName(\n detectPackageManager(context.workspaceRoot)\n );\n const hashes = await calculateHashesForCreateNodes(\n projectRoots,\n { ...normalizedOptions, isUsingTsSolutionSetup },\n context,\n projectRoots.map((r) => [lockfile])\n );\n\n try {\n return await createNodesFromFiles(\n async (configFile, _, context, idx) => {\n const projectRoot = dirname(configFile);\n // Do not create a project if package.json and project.json isn't there.\n const siblingFiles = readdirSync(\n join(context.workspaceRoot, projectRoot)\n );\n\n const tsConfigFiles =\n siblingFiles.filter((p) =>\n picomatch('tsconfig*{.json,.*.json}')(p)\n ) ?? [];\n\n const hasReactRouterConfig = siblingFiles.some((configFile) => {\n const parts = configFile.split('.');\n return (\n parts[0] === 'react-router' &&\n parts[1] === 'config' &&\n parts.length > 2\n );\n });\n\n // results from vitest.config.js will be different from results of vite.config.js\n // but the hash will be the same because it is based on the files under the project root.\n // Adding the config file path to the hash ensures that the final hash value is different\n // for different config files.\n const hash = hashes[idx] + configFile;\n const { projectType, metadata, targets } = (targetsCache[hash] ??=\n await buildViteTargets(\n configFile,\n projectRoot,\n normalizedOptions,\n tsConfigFiles,\n hasReactRouterConfig,\n isUsingTsSolutionSetup,\n context\n ));\n\n const project: ProjectConfiguration = {\n root: projectRoot,\n targets,\n metadata,\n };\n\n // If project is buildable, then the project type.\n // If it is not buildable, then leave it to other plugins/project.json to set the project type.\n if (project.targets[normalizedOptions.buildTargetName]) {\n project.projectType = projectType;\n }\n\n return {\n projects: {\n [projectRoot]: project,\n },\n };\n },\n validConfigFiles,\n options,\n context\n );\n } finally {\n writeTargetsToCache(cachePath, targetsCache);\n }\n },\n];\n\nexport const createNodes: CreateNodes<VitePluginOptions> = [\n viteVitestConfigGlob,\n async (configFilePath, options, context) => {\n logger.warn(\n '`createNodes` is deprecated. Update your plugin to utilize createNodesV2 instead. In Nx 20, this will change to the createNodesV2 API.'\n );\n const projectRoot = dirname(configFilePath);\n // Do not create a project if package.json and project.json isn't there.\n const siblingFiles = readdirSync(join(context.workspaceRoot, projectRoot));\n if (\n !siblingFiles.includes('package.json') &&\n !siblingFiles.includes('project.json')\n ) {\n return {};\n }\n\n const tsConfigFiles =\n siblingFiles.filter((p) => picomatch('tsconfig*{.json,.*.json}')(p)) ??\n [];\n\n const hasReactRouterConfig = siblingFiles.some((configFile) => {\n const parts = configFile.split('.');\n return (\n parts[0] === 'react-router' && parts[1] === 'config' && parts.length > 2\n );\n });\n\n const normalizedOptions = normalizeOptions(options);\n\n const isUsingTsSolutionSetup = _isUsingTsSolutionSetup();\n\n const { projectType, metadata, targets } = await buildViteTargets(\n configFilePath,\n projectRoot,\n normalizedOptions,\n tsConfigFiles,\n hasReactRouterConfig,\n isUsingTsSolutionSetup,\n context\n );\n const project: ProjectConfiguration = {\n root: projectRoot,\n targets,\n metadata,\n };\n\n // If project is buildable, then the project type.\n // If it is not buildable, then leave it to other plugins/project.json to set the project type.\n if (project.targets[normalizedOptions.buildTargetName]) {\n project.projectType = projectType;\n }\n\n return {\n projects: {\n [projectRoot]: project,\n },\n };\n },\n];\n\nasync function buildViteTargets(\n configFilePath: string,\n projectRoot: string,\n options: VitePluginOptions,\n tsConfigFiles: string[],\n hasReactRouterConfig: boolean,\n isUsingTsSolutionSetup: boolean,\n context: CreateNodesContext\n): Promise<ViteTargets> {\n const absoluteConfigFilePath = joinPathFragments(\n context.workspaceRoot,\n configFilePath\n );\n // Workaround for the `build$3 is not a function` error that we sometimes see in agents.\n // This should be removed later once we address the issue properly\n try {\n const importEsbuild = () => new Function('return import(\"esbuild\")')();\n await importEsbuild();\n } catch {\n // do nothing\n }\n const { resolveConfig } = await loadViteDynamicImport();\n const viteBuildConfig = await resolveConfig(\n {\n configFile: absoluteConfigFilePath,\n mode: 'development',\n },\n 'build'\n );\n\n const { buildOutputs, testOutputs, hasTest, isBuildable, hasServeConfig } =\n getOutputs(viteBuildConfig, projectRoot, context.workspaceRoot);\n\n const namedInputs = getNamedInputs(projectRoot, context);\n\n const targets: Record<string, TargetConfiguration> = {};\n\n // if file is vitest.config or vite.config has definition for test, create target for test\n if (configFilePath.includes('vitest.config') || hasTest) {\n targets[options.testTargetName] = await testTarget(\n namedInputs,\n testOutputs,\n projectRoot\n );\n }\n\n if (hasReactRouterConfig) {\n // If we have a react-router config, we can skip the rest of the targets\n return { targets, metadata: {}, projectType: 'application' };\n }\n // If file is not vitest.config and buildable, create targets for build, serve, preview and serve-static\n const hasRemixPlugin =\n viteBuildConfig.plugins &&\n viteBuildConfig.plugins.some((p) => p.name === 'remix');\n if (\n !configFilePath.includes('vitest.config') &&\n !hasRemixPlugin &&\n isBuildable\n ) {\n targets[options.buildTargetName] = await buildTarget(\n options.buildTargetName,\n namedInputs,\n buildOutputs,\n projectRoot,\n isUsingTsSolutionSetup\n );\n\n // If running in library mode, then there is nothing to serve.\n if (!viteBuildConfig.build?.lib || hasServeConfig) {\n const devTarget = serveTarget(projectRoot, isUsingTsSolutionSetup);\n\n targets[options.serveTargetName] = {\n ...devTarget,\n metadata: {\n ...devTarget.metadata,\n deprecated:\n 'Use devTargetName instead. This option will be removed in Nx 22.',\n },\n };\n targets[options.devTargetName] = devTarget;\n targets[options.previewTargetName] = previewTarget(\n projectRoot,\n options.buildTargetName\n );\n targets[options.serveStaticTargetName] = serveStaticTarget(\n options,\n isUsingTsSolutionSetup\n );\n }\n }\n\n if (tsConfigFiles.length) {\n const tsConfigToUse =\n ['tsconfig.app.json', 'tsconfig.lib.json', 'tsconfig.json'].find((t) =>\n tsConfigFiles.includes(t)\n ) ?? tsConfigFiles[0];\n\n // Check if the project uses Vue plugin\n const hasVuePlugin = viteBuildConfig.plugins?.some(\n (p) => p.name === 'vite:vue'\n );\n const typeCheckCommand = hasVuePlugin ? 'vue-tsc' : 'tsc';\n\n targets[options.typecheckTargetName] = {\n cache: true,\n inputs: [\n ...('production' in namedInputs\n ? ['production', '^production']\n : ['default', '^default']),\n {\n externalDependencies: hasVuePlugin\n ? ['vue-tsc', 'typescript']\n : ['typescript'],\n },\n ],\n command: isUsingTsSolutionSetup\n ? `${typeCheckCommand} --build --emitDeclarationOnly`\n : `${typeCheckCommand} --noEmit -p ${tsConfigToUse}`,\n options: { cwd: joinPathFragments(projectRoot) },\n metadata: {\n description: `Runs type-checking for the project.`,\n technologies: hasVuePlugin ? ['typescript', 'vue'] : ['typescript'],\n help: {\n command: isUsingTsSolutionSetup\n ? `${pmc.exec} ${typeCheckCommand} --build --help`\n : `${pmc.exec} ${typeCheckCommand} -p ${tsConfigToUse} --help`,\n example: isUsingTsSolutionSetup\n ? { args: ['--force'] }\n : { options: { noEmit: true } },\n },\n },\n };\n\n if (isUsingTsSolutionSetup) {\n targets[options.typecheckTargetName].dependsOn = [\n `^${options.typecheckTargetName}`,\n ];\n targets[options.typecheckTargetName].syncGenerators = [\n '@nx/js:typescript-sync',\n ];\n }\n }\n\n addBuildAndWatchDepsTargets(\n context.workspaceRoot,\n projectRoot,\n targets,\n options,\n pmc\n );\n\n const metadata = {};\n return {\n targets,\n metadata,\n projectType: viteBuildConfig.build?.lib ? 'library' : 'application',\n };\n}\n\nasync function buildTarget(\n buildTargetName: string,\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string,\n isUsingTsSolutionSetup: boolean\n) {\n const buildTarget: TargetConfiguration = {\n command: `vite build`,\n options: { cwd: joinPathFragments(projectRoot) },\n cache: true,\n dependsOn: [`^${buildTargetName}`],\n inputs: [\n ...('production' in namedInputs\n ? ['production', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vite'],\n },\n ],\n outputs,\n metadata: {\n technologies: ['vite'],\n description: `Run Vite build`,\n help: {\n command: `${pmc.exec} vite build --help`,\n example: {\n options: {\n sourcemap: true,\n manifest: 'manifest.json',\n },\n },\n },\n },\n };\n\n if (isUsingTsSolutionSetup) {\n buildTarget.syncGenerators = ['@nx/js:typescript-sync'];\n }\n\n return buildTarget;\n}\n\nfunction serveTarget(projectRoot: string, isUsingTsSolutionSetup: boolean) {\n const targetConfig: TargetConfiguration = {\n continuous: true,\n command: `vite`,\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n metadata: {\n technologies: ['vite'],\n description: `Starts Vite dev server`,\n help: {\n command: `${pmc.exec} vite --help`,\n example: {\n options: {\n port: 3000,\n },\n },\n },\n },\n };\n\n if (isUsingTsSolutionSetup) {\n targetConfig.syncGenerators = ['@nx/js:typescript-sync'];\n }\n\n return targetConfig;\n}\n\nfunction previewTarget(projectRoot: string, buildTargetName) {\n const targetConfig: TargetConfiguration = {\n continuous: true,\n command: `vite preview`,\n dependsOn: [buildTargetName],\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n metadata: {\n technologies: ['vite'],\n description: `Locally preview Vite production build`,\n help: {\n command: `${pmc.exec} vite preview --help`,\n example: {\n options: {\n port: 3000,\n },\n },\n },\n },\n };\n\n return targetConfig;\n}\n\nasync function testTarget(\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string\n) {\n return {\n command: `vitest`,\n options: { cwd: joinPathFragments(projectRoot) },\n cache: true,\n inputs: [\n ...('production' in namedInputs\n ? ['default', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vitest'],\n },\n { env: 'CI' },\n ],\n outputs,\n metadata: {\n technologies: ['vite'],\n description: `Run Vite tests`,\n help: {\n command: `${pmc.exec} vitest --help`,\n example: {\n options: {\n bail: 1,\n coverage: true,\n },\n },\n },\n },\n };\n}\n\nfunction serveStaticTarget(\n options: VitePluginOptions,\n isUsingTsSolutionSetup: boolean\n) {\n const targetConfig: TargetConfiguration = {\n continuous: true,\n executor: '@nx/web:file-server',\n options: {\n buildTarget: `${options.buildTargetName}`,\n spa: true,\n },\n };\n\n if (isUsingTsSolutionSetup) {\n targetConfig.syncGenerators = ['@nx/js:typescript-sync'];\n }\n\n return targetConfig;\n}\n\nfunction getOutputs(\n viteBuildConfig: Record<string, any> | undefined,\n projectRoot: string,\n workspaceRoot: string\n): {\n buildOutputs: string[];\n testOutputs: string[];\n hasTest: boolean;\n isBuildable: boolean;\n hasServeConfig: boolean;\n} {\n const { build, test, server } = viteBuildConfig;\n\n const buildOutputPath = normalizeOutputPath(\n build?.outDir,\n projectRoot,\n workspaceRoot,\n 'dist'\n );\n\n const isBuildable =\n build?.lib ||\n build?.rollupOptions?.input ||\n existsSync(join(workspaceRoot, projectRoot, 'index.html'));\n\n const hasServeConfig = Boolean(server);\n\n const reportsDirectoryPath = normalizeOutputPath(\n test?.coverage?.reportsDirectory,\n projectRoot,\n workspaceRoot,\n 'coverage'\n );\n\n return {\n buildOutputs: [buildOutputPath],\n testOutputs: [reportsDirectoryPath],\n hasTest: !!test,\n isBuildable,\n hasServeConfig,\n };\n}\n\nfunction normalizeOutputPath(\n outputPath: string | undefined,\n projectRoot: string,\n workspaceRoot: string,\n path: 'coverage' | 'dist'\n): string | undefined {\n if (!outputPath) {\n if (projectRoot === '.') {\n return `{projectRoot}/${path}`;\n } else {\n return `{workspaceRoot}/${path}/{projectRoot}`;\n }\n } else {\n if (isAbsolute(outputPath)) {\n return `{workspaceRoot}/${relative(workspaceRoot, outputPath)}`;\n } else {\n if (outputPath.startsWith('..')) {\n return join('{workspaceRoot}', join(projectRoot, outputPath));\n } else {\n return join('{projectRoot}', outputPath);\n }\n }\n }\n}\n\nfunction normalizeOptions(options: VitePluginOptions): VitePluginOptions {\n options ??= {};\n options.buildTargetName ??= 'build';\n options.serveTargetName ??= 'serve';\n options.devTargetName ??= 'dev';\n options.previewTargetName ??= 'preview';\n options.testTargetName ??= 'test';\n options.serveStaticTargetName ??= 'serve-static';\n options.typecheckTargetName ??= 'typecheck';\n return options;\n}\n\nfunction checkIfConfigFileShouldBeProject(\n projectRoot: string,\n context: CreateNodesContext | CreateNodesContextV2\n): boolean {\n // Do not create a project if package.json and project.json isn't there.\n const siblingFiles = readdirSync(join(context.workspaceRoot, projectRoot));\n if (\n !siblingFiles.includes('package.json') &&\n !siblingFiles.includes('project.json')\n ) {\n return false;\n }\n\n return true;\n}\n"],"names":["createDependencies","createNodes","createNodesV2","picomatch","pmc","getPackageManagerCommand","readTargetsCache","cachePath","process","env","NX_CACHE_PROJECT_GRAPH","existsSync","readJsonFile","writeTargetsToCache","results","writeJsonFile","viteVitestConfigGlob","configFilePaths","options","context","optionsHash","hashObject","normalizedOptions","normalizeOptions","join","workspaceDataDirectory","targetsCache","isUsingTsSolutionSetup","_isUsingTsSolutionSetup","roots","projectRoots","configFiles","validConfigFiles","reduce","acc","configFile","potentialRoot","dirname","checkIfConfigFileShouldBeProject","push","lockfile","getLockFileName","detectPackageManager","workspaceRoot","hashes","calculateHashesForCreateNodes","map","r","createNodesFromFiles","_","idx","hash","projectRoot","siblingFiles","readdirSync","tsConfigFiles","filter","p","hasReactRouterConfig","some","parts","split","length","projectType","metadata","targets","buildViteTargets","project","root","buildTargetName","projects","configFilePath","logger","warn","includes","viteBuildConfig","absoluteConfigFilePath","joinPathFragments","importEsbuild","Function","resolveConfig","loadViteDynamicImport","mode","buildOutputs","testOutputs","hasTest","isBuildable","hasServeConfig","getOutputs","namedInputs","getNamedInputs","testTargetName","testTarget","hasRemixPlugin","plugins","name","buildTarget","build","lib","devTarget","serveTarget","serveTargetName","deprecated","devTargetName","previewTargetName","previewTarget","serveStaticTargetName","serveStaticTarget","tsConfigToUse","find","t","hasVuePlugin","typeCheckCommand","typecheckTargetName","cache","inputs","externalDependencies","command","cwd","description","technologies","help","exec","example","args","noEmit","dependsOn","syncGenerators","addBuildAndWatchDepsTargets","outputs","sourcemap","manifest","targetConfig","continuous","port","bail","coverage","executor","spa","test","server","buildOutputPath","normalizeOutputPath","outDir","rollupOptions","input","Boolean","reportsDirectoryPath","reportsDirectory","outputPath","path","isAbsolute","relative","startsWith"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import { type Tree } from '@nx/devkit';
2
- export declare function getViteE2EWebServerInfo(tree: Tree, projectName: string, configFilePath: string, isPluginBeingAdded: boolean, e2ePortOverride?: number): Promise<import("@nx/devkit/src/generators/e2e-web-server-info-utils").E2EWebServerDetails>;
3
- export declare function getReactRouterE2EWebServerInfo(tree: Tree, projectName: string, configFilePath: string, isPluginBeingAdded: boolean, e2ePortOverride?: number): Promise<import("@nx/devkit/src/generators/e2e-web-server-info-utils").E2EWebServerDetails>;
2
+ export declare function getViteE2EWebServerInfo(tree: Tree, projectName: string, configFilePath: string, isPluginBeingAdded: boolean, e2ePortOverride?: number, e2eCIPortOverride?: number): Promise<import("@nx/devkit/src/generators/e2e-web-server-info-utils").E2EWebServerDetails>;
3
+ export declare function getReactRouterE2EWebServerInfo(tree: Tree, projectName: string, configFilePath: string, isPluginBeingAdded: boolean, e2ePortOverride?: number, e2eCIPortOverride?: number): Promise<import("@nx/devkit/src/generators/e2e-web-server-info-utils").E2EWebServerDetails>;
@@ -15,7 +15,7 @@ _export(exports, {
15
15
  });
16
16
  const _devkit = require("@nx/devkit");
17
17
  const _e2ewebserverinfoutils = require("@nx/devkit/src/generators/e2e-web-server-info-utils");
18
- async function getViteE2EWebServerInfo(tree, projectName, configFilePath, isPluginBeingAdded, e2ePortOverride) {
18
+ async function getViteE2EWebServerInfo(tree, projectName, configFilePath, isPluginBeingAdded, e2ePortOverride, e2eCIPortOverride) {
19
19
  var _nxJson_targetDefaults, _nxJson_targetDefaults_dev_options, _nxJson_targetDefaults1, _nxJson_targetDefaults2, _nxJson_targetDefaults_serve_options, _nxJson_targetDefaults3;
20
20
  const nxJson = (0, _devkit.readNxJson)(tree);
21
21
  let e2ePort = e2ePortOverride != null ? e2ePortOverride : 4200;
@@ -33,11 +33,11 @@ async function getViteE2EWebServerInfo(tree, projectName, configFilePath, isPlug
33
33
  defaultServeTargetName: 'dev',
34
34
  defaultServeStaticTargetName: 'preview',
35
35
  defaultE2EWebServerAddress: `http://localhost:${e2ePort}`,
36
- defaultE2ECiBaseUrl: 'http://localhost:4300',
36
+ defaultE2ECiBaseUrl: `http://localhost:${e2eCIPortOverride != null ? e2eCIPortOverride : 4300}`,
37
37
  defaultE2EPort: e2ePort
38
38
  }, isPluginBeingAdded);
39
39
  }
40
- async function getReactRouterE2EWebServerInfo(tree, projectName, configFilePath, isPluginBeingAdded, e2ePortOverride) {
40
+ async function getReactRouterE2EWebServerInfo(tree, projectName, configFilePath, isPluginBeingAdded, e2ePortOverride, e2eCIPortOverride) {
41
41
  var _ref;
42
42
  const e2ePort = (_ref = e2ePortOverride != null ? e2ePortOverride : parseInt(process.env.PORT)) != null ? _ref : 4200;
43
43
  return await (0, _e2ewebserverinfoutils.getE2EWebServerInfo)(tree, projectName, {
@@ -49,7 +49,7 @@ async function getReactRouterE2EWebServerInfo(tree, projectName, configFilePath,
49
49
  defaultServeTargetName: 'dev',
50
50
  defaultServeStaticTargetName: 'dev',
51
51
  defaultE2EWebServerAddress: `http://localhost:${e2ePort}`,
52
- defaultE2ECiBaseUrl: 'http://localhost:4200',
52
+ defaultE2ECiBaseUrl: `http://localhost:${e2eCIPortOverride != null ? e2eCIPortOverride : 4300}`,
53
53
  defaultE2EPort: e2ePort
54
54
  }, isPluginBeingAdded);
55
55
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/vite/src/utils/e2e-web-server-info-utils.ts"],"sourcesContent":["import { type Tree, readNxJson } from '@nx/devkit';\nimport { getE2EWebServerInfo } from '@nx/devkit/src/generators/e2e-web-server-info-utils';\n\nexport async function getViteE2EWebServerInfo(\n tree: Tree,\n projectName: string,\n configFilePath: string,\n isPluginBeingAdded: boolean,\n e2ePortOverride?: number\n) {\n const nxJson = readNxJson(tree);\n let e2ePort = e2ePortOverride ?? 4200;\n\n if (\n (nxJson.targetDefaults?.['dev'] &&\n nxJson.targetDefaults?.['dev'].options?.port) ||\n (nxJson.targetDefaults?.['serve'] &&\n nxJson.targetDefaults?.['serve'].options?.port)\n ) {\n e2ePort =\n nxJson.targetDefaults?.['dev'].options?.port ??\n nxJson.targetDefaults?.['serve'].options?.port;\n }\n\n return getE2EWebServerInfo(\n tree,\n projectName,\n {\n plugin: '@nx/vite/plugin',\n serveTargetName: 'devTargetName',\n serveStaticTargetName: 'previewTargetName',\n configFilePath,\n },\n {\n defaultServeTargetName: 'dev',\n defaultServeStaticTargetName: 'preview',\n defaultE2EWebServerAddress: `http://localhost:${e2ePort}`,\n defaultE2ECiBaseUrl: 'http://localhost:4300',\n defaultE2EPort: e2ePort,\n },\n isPluginBeingAdded\n );\n}\n\nexport async function getReactRouterE2EWebServerInfo(\n tree: Tree,\n projectName: string,\n configFilePath: string,\n isPluginBeingAdded: boolean,\n e2ePortOverride?: number\n) {\n const e2ePort = e2ePortOverride ?? parseInt(process.env.PORT) ?? 4200;\n\n return await getE2EWebServerInfo(\n tree,\n projectName,\n {\n plugin: '@nx/react/router-plugin',\n serveTargetName: 'devTargetName',\n serveStaticTargetName: 'devTargetName',\n configFilePath,\n },\n {\n defaultServeTargetName: 'dev',\n defaultServeStaticTargetName: 'dev',\n defaultE2EWebServerAddress: `http://localhost:${e2ePort}`,\n defaultE2ECiBaseUrl: 'http://localhost:4200',\n defaultE2EPort: e2ePort,\n },\n isPluginBeingAdded\n );\n}\n"],"names":["getReactRouterE2EWebServerInfo","getViteE2EWebServerInfo","tree","projectName","configFilePath","isPluginBeingAdded","e2ePortOverride","nxJson","readNxJson","e2ePort","targetDefaults","options","port","getE2EWebServerInfo","plugin","serveTargetName","serveStaticTargetName","defaultServeTargetName","defaultServeStaticTargetName","defaultE2EWebServerAddress","defaultE2ECiBaseUrl","defaultE2EPort","parseInt","process","env","PORT"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IA4CsBA,8BAA8B;eAA9BA;;IAzCAC,uBAAuB;eAAvBA;;;wBAHgB;uCACF;AAE7B,eAAeA,wBACpBC,IAAU,EACVC,WAAmB,EACnBC,cAAsB,EACtBC,kBAA2B,EAC3BC,eAAwB;QAMrBC,wBACCA,oCAAAA,yBACDA,yBACCA,sCAAAA;IAPJ,MAAMA,SAASC,IAAAA,kBAAU,EAACN;IAC1B,IAAIO,UAAUH,0BAAAA,kBAAmB;IAEjC,IACE,EAACC,yBAAAA,OAAOG,cAAc,qBAArBH,sBAAuB,CAAC,MAAM,OAC7BA,0BAAAA,OAAOG,cAAc,sBAArBH,qCAAAA,uBAAuB,CAAC,MAAM,CAACI,OAAO,qBAAtCJ,mCAAwCK,IAAI,KAC7CL,EAAAA,0BAAAA,OAAOG,cAAc,qBAArBH,uBAAuB,CAAC,QAAQ,OAC/BA,0BAAAA,OAAOG,cAAc,sBAArBH,uCAAAA,uBAAuB,CAAC,QAAQ,CAACI,OAAO,qBAAxCJ,qCAA0CK,IAAI,GAChD;YAEEL,qCAAAA,yBACAA,uCAAAA;YADAA;QADFE,UACEF,CAAAA,2CAAAA,0BAAAA,OAAOG,cAAc,sBAArBH,sCAAAA,uBAAuB,CAAC,MAAM,CAACI,OAAO,qBAAtCJ,oCAAwCK,IAAI,YAA5CL,2CACAA,0BAAAA,OAAOG,cAAc,sBAArBH,wCAAAA,uBAAuB,CAAC,QAAQ,CAACI,OAAO,qBAAxCJ,sCAA0CK,IAAI;IAClD;IAEA,OAAOC,IAAAA,0CAAmB,EACxBX,MACAC,aACA;QACEW,QAAQ;QACRC,iBAAiB;QACjBC,uBAAuB;QACvBZ;IACF,GACA;QACEa,wBAAwB;QACxBC,8BAA8B;QAC9BC,4BAA4B,CAAC,iBAAiB,EAAEV,QAAQ,CAAC;QACzDW,qBAAqB;QACrBC,gBAAgBZ;IAClB,GACAJ;AAEJ;AAEO,eAAeL,+BACpBE,IAAU,EACVC,WAAmB,EACnBC,cAAsB,EACtBC,kBAA2B,EAC3BC,eAAwB;QAERA;IAAhB,MAAMG,UAAUH,CAAAA,OAAAA,0BAAAA,kBAAmBgB,SAASC,QAAQC,GAAG,CAACC,IAAI,aAA5CnB,OAAiD;IAEjE,OAAO,MAAMO,IAAAA,0CAAmB,EAC9BX,MACAC,aACA;QACEW,QAAQ;QACRC,iBAAiB;QACjBC,uBAAuB;QACvBZ;IACF,GACA;QACEa,wBAAwB;QACxBC,8BAA8B;QAC9BC,4BAA4B,CAAC,iBAAiB,EAAEV,QAAQ,CAAC;QACzDW,qBAAqB;QACrBC,gBAAgBZ;IAClB,GACAJ;AAEJ"}
1
+ {"version":3,"sources":["../../../../../packages/vite/src/utils/e2e-web-server-info-utils.ts"],"sourcesContent":["import { type Tree, readNxJson } from '@nx/devkit';\nimport { getE2EWebServerInfo } from '@nx/devkit/src/generators/e2e-web-server-info-utils';\n\nexport async function getViteE2EWebServerInfo(\n tree: Tree,\n projectName: string,\n configFilePath: string,\n isPluginBeingAdded: boolean,\n e2ePortOverride?: number,\n e2eCIPortOverride?: number\n) {\n const nxJson = readNxJson(tree);\n let e2ePort = e2ePortOverride ?? 4200;\n\n if (\n (nxJson.targetDefaults?.['dev'] &&\n nxJson.targetDefaults?.['dev'].options?.port) ||\n (nxJson.targetDefaults?.['serve'] &&\n nxJson.targetDefaults?.['serve'].options?.port)\n ) {\n e2ePort =\n nxJson.targetDefaults?.['dev'].options?.port ??\n nxJson.targetDefaults?.['serve'].options?.port;\n }\n\n return getE2EWebServerInfo(\n tree,\n projectName,\n {\n plugin: '@nx/vite/plugin',\n serveTargetName: 'devTargetName',\n serveStaticTargetName: 'previewTargetName',\n configFilePath,\n },\n {\n defaultServeTargetName: 'dev',\n defaultServeStaticTargetName: 'preview',\n defaultE2EWebServerAddress: `http://localhost:${e2ePort}`,\n defaultE2ECiBaseUrl: `http://localhost:${e2eCIPortOverride ?? 4300}`,\n defaultE2EPort: e2ePort,\n },\n isPluginBeingAdded\n );\n}\n\nexport async function getReactRouterE2EWebServerInfo(\n tree: Tree,\n projectName: string,\n configFilePath: string,\n isPluginBeingAdded: boolean,\n e2ePortOverride?: number,\n e2eCIPortOverride?: number\n) {\n const e2ePort = e2ePortOverride ?? parseInt(process.env.PORT) ?? 4200;\n\n return await getE2EWebServerInfo(\n tree,\n projectName,\n {\n plugin: '@nx/react/router-plugin',\n serveTargetName: 'devTargetName',\n serveStaticTargetName: 'devTargetName',\n configFilePath,\n },\n {\n defaultServeTargetName: 'dev',\n defaultServeStaticTargetName: 'dev',\n defaultE2EWebServerAddress: `http://localhost:${e2ePort}`,\n defaultE2ECiBaseUrl: `http://localhost:${e2eCIPortOverride ?? 4300}`,\n defaultE2EPort: e2ePort,\n },\n isPluginBeingAdded\n );\n}\n"],"names":["getReactRouterE2EWebServerInfo","getViteE2EWebServerInfo","tree","projectName","configFilePath","isPluginBeingAdded","e2ePortOverride","e2eCIPortOverride","nxJson","readNxJson","e2ePort","targetDefaults","options","port","getE2EWebServerInfo","plugin","serveTargetName","serveStaticTargetName","defaultServeTargetName","defaultServeStaticTargetName","defaultE2EWebServerAddress","defaultE2ECiBaseUrl","defaultE2EPort","parseInt","process","env","PORT"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IA6CsBA,8BAA8B;eAA9BA;;IA1CAC,uBAAuB;eAAvBA;;;wBAHgB;uCACF;AAE7B,eAAeA,wBACpBC,IAAU,EACVC,WAAmB,EACnBC,cAAsB,EACtBC,kBAA2B,EAC3BC,eAAwB,EACxBC,iBAA0B;QAMvBC,wBACCA,oCAAAA,yBACDA,yBACCA,sCAAAA;IAPJ,MAAMA,SAASC,IAAAA,kBAAU,EAACP;IAC1B,IAAIQ,UAAUJ,0BAAAA,kBAAmB;IAEjC,IACE,EAACE,yBAAAA,OAAOG,cAAc,qBAArBH,sBAAuB,CAAC,MAAM,OAC7BA,0BAAAA,OAAOG,cAAc,sBAArBH,qCAAAA,uBAAuB,CAAC,MAAM,CAACI,OAAO,qBAAtCJ,mCAAwCK,IAAI,KAC7CL,EAAAA,0BAAAA,OAAOG,cAAc,qBAArBH,uBAAuB,CAAC,QAAQ,OAC/BA,0BAAAA,OAAOG,cAAc,sBAArBH,uCAAAA,uBAAuB,CAAC,QAAQ,CAACI,OAAO,qBAAxCJ,qCAA0CK,IAAI,GAChD;YAEEL,qCAAAA,yBACAA,uCAAAA;YADAA;QADFE,UACEF,CAAAA,2CAAAA,0BAAAA,OAAOG,cAAc,sBAArBH,sCAAAA,uBAAuB,CAAC,MAAM,CAACI,OAAO,qBAAtCJ,oCAAwCK,IAAI,YAA5CL,2CACAA,0BAAAA,OAAOG,cAAc,sBAArBH,wCAAAA,uBAAuB,CAAC,QAAQ,CAACI,OAAO,qBAAxCJ,sCAA0CK,IAAI;IAClD;IAEA,OAAOC,IAAAA,0CAAmB,EACxBZ,MACAC,aACA;QACEY,QAAQ;QACRC,iBAAiB;QACjBC,uBAAuB;QACvBb;IACF,GACA;QACEc,wBAAwB;QACxBC,8BAA8B;QAC9BC,4BAA4B,CAAC,iBAAiB,EAAEV,QAAQ,CAAC;QACzDW,qBAAqB,CAAC,iBAAiB,EAAEd,4BAAAA,oBAAqB,KAAK,CAAC;QACpEe,gBAAgBZ;IAClB,GACAL;AAEJ;AAEO,eAAeL,+BACpBE,IAAU,EACVC,WAAmB,EACnBC,cAAsB,EACtBC,kBAA2B,EAC3BC,eAAwB,EACxBC,iBAA0B;QAEVD;IAAhB,MAAMI,UAAUJ,CAAAA,OAAAA,0BAAAA,kBAAmBiB,SAASC,QAAQC,GAAG,CAACC,IAAI,aAA5CpB,OAAiD;IAEjE,OAAO,MAAMQ,IAAAA,0CAAmB,EAC9BZ,MACAC,aACA;QACEY,QAAQ;QACRC,iBAAiB;QACjBC,uBAAuB;QACvBb;IACF,GACA;QACEc,wBAAwB;QACxBC,8BAA8B;QAC9BC,4BAA4B,CAAC,iBAAiB,EAAEV,QAAQ,CAAC;QACzDW,qBAAqB,CAAC,iBAAiB,EAAEd,4BAAAA,oBAAqB,KAAK,CAAC;QACpEe,gBAAgBZ;IAClB,GACAL;AAEJ"}
@@ -37,6 +37,8 @@ export interface ViteConfigFileOptions {
37
37
  coverageProvider?: 'v8' | 'istanbul' | 'custom';
38
38
  setupFile?: string;
39
39
  useEsmExtension?: boolean;
40
+ port?: number;
41
+ previewPort?: number;
40
42
  }
41
43
  export declare function createOrEditViteConfig(tree: Tree, options: ViteConfigFileOptions, onlyVitest: boolean, projectAlreadyHasViteTargets?: TargetFlags, vitestFileName?: boolean): void;
42
44
  export declare function normalizeViteConfigFilePathWithTree(tree: Tree, projectRoot: string, configFile?: string): string;
@@ -303,8 +303,8 @@ function createOrEditViteConfig(tree, options, onlyVitest, projectAlreadyHasVite
303
303
  const { root: projectRoot } = (0, _devkit.readProjectConfiguration)(tree, options.project);
304
304
  const extension = options.useEsmExtension ? 'mts' : 'ts';
305
305
  const viteConfigPath = vitestFileName ? `${projectRoot}/vitest.config.${extension}` : `${projectRoot}/vite.config.${extension}`;
306
- const isUsingTsPlugin = (0, _tssolutionsetup.isUsingTsSolutionSetup)(tree);
307
- const buildOutDir = isUsingTsPlugin ? './dist' : projectRoot === '.' ? `./dist/${options.project}` : `${(0, _devkit.offsetFromRoot)(projectRoot)}dist/${projectRoot}`;
306
+ const isTsSolutionSetup = (0, _tssolutionsetup.isUsingTsSolutionSetup)(tree);
307
+ const buildOutDir = isTsSolutionSetup ? './dist' : projectRoot === '.' ? `./dist/${options.project}` : `${(0, _devkit.offsetFromRoot)(projectRoot)}dist/${projectRoot}`;
308
308
  var _options_rollupOptionsExternal;
309
309
  const buildOption = onlyVitest ? '' : options.includeLib ? ` // Configuration for building your library.
310
310
  // See: https://vitejs.dev/guide/build.html#library-mode
@@ -345,14 +345,14 @@ function createOrEditViteConfig(tree, options, onlyVitest, projectAlreadyHasVite
345
345
  if (!onlyVitest && options.includeLib) {
346
346
  imports.push(`import dts from 'vite-plugin-dts'`, `import * as path from 'path'`);
347
347
  }
348
- if (!isUsingTsPlugin) {
348
+ if (!isTsSolutionSetup) {
349
349
  imports.push(`import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'`, `import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'`);
350
350
  plugins.push(`nxViteTsPaths()`, `nxCopyAssetsPlugin(['*.md'])`);
351
351
  }
352
352
  if (!onlyVitest && options.includeLib) {
353
- plugins.push(`dts({ entryRoot: 'src', tsconfigPath: path.join(__dirname, 'tsconfig.lib.json') })`);
353
+ plugins.push(`dts({ entryRoot: 'src', tsconfigPath: path.join(__dirname, 'tsconfig.lib.json')${!isTsSolutionSetup ? ', pathsToAliases: false' : ''} })`);
354
354
  }
355
- const reportsDirectory = isUsingTsPlugin ? './test-output/vitest/coverage' : projectRoot === '.' ? `./coverage/${options.project}` : `${(0, _devkit.offsetFromRoot)(projectRoot)}coverage/${projectRoot}`;
355
+ const reportsDirectory = isTsSolutionSetup ? './test-output/vitest/coverage' : projectRoot === '.' ? `./coverage/${options.project}` : `${(0, _devkit.offsetFromRoot)(projectRoot)}coverage/${projectRoot}`;
356
356
  var _options_testEnvironment;
357
357
  const testOption = options.includeVitest ? ` test: {
358
358
  watch: false,
@@ -370,12 +370,14 @@ ${options.inSourceTests ? ` includeSource: ['src/**/*.{js,mjs,cjs,ts,mts,cts,
370
370
  const defineOption = options.inSourceTests ? ` define: {
371
371
  'import.meta.vitest': undefined
372
372
  },` : '';
373
+ var _options_port;
373
374
  const devServerOption = onlyVitest ? '' : options.includeLib ? '' : ` server:{
374
- port: 4200,
375
+ port: ${(_options_port = options.port) != null ? _options_port : 4200},
375
376
  host: 'localhost',
376
377
  },`;
378
+ var _options_previewPort;
377
379
  const previewServerOption = onlyVitest ? '' : options.includeLib ? '' : ` preview:{
378
- port: 4300,
380
+ port: ${(_options_previewPort = options.previewPort) != null ? _options_previewPort : 4300},
379
381
  host: 'localhost',
380
382
  },`;
381
383
  const workerOption = ` // Uncomment this if you are using workers.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/vite/src/utils/generator-utils.ts"],"sourcesContent":["import {\n joinPathFragments,\n logger,\n offsetFromRoot,\n readJson,\n readNxJson,\n readProjectConfiguration,\n TargetConfiguration,\n Tree,\n updateProjectConfiguration,\n writeJson,\n} from '@nx/devkit';\nimport { addBuildTargetDefaults } from '@nx/devkit/src/generators/target-defaults-utils';\nimport { isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { ViteBuildExecutorOptions } from '../executors/build/schema';\nimport { VitePreviewServerExecutorOptions } from '../executors/preview-server/schema';\nimport { VitestExecutorOptions } from '../executors/test/schema';\nimport { ViteConfigurationGeneratorSchema } from '../generators/configuration/schema';\nimport { ensureViteConfigIsCorrect } from './vite-config-edit-utils';\nimport { VitestGeneratorSchema } from '../generators/vitest/schema';\n\nexport type Target = 'build' | 'serve' | 'test' | 'preview';\nexport type TargetFlags = Partial<Record<Target, boolean>>;\nexport type UserProvidedTargetName = Partial<Record<Target, string>>;\nexport type ValidFoundTargetName = Partial<Record<Target, string>>;\n\nexport function findExistingJsBuildTargetInProject(targets: {\n [targetName: string]: TargetConfiguration;\n}): {\n supported?: string;\n unsupported?: string;\n} {\n const output: {\n supported?: string;\n unsupported?: string;\n } = {};\n\n const supportedExecutors = {\n build: ['@nx/js:babel', '@nx/js:swc', '@nx/rollup:rollup'],\n };\n const unsupportedExecutors = [\n '@nx/angular:ng-packagr-lite',\n '@nx/angular:package',\n '@nx/angular:webpack-browser',\n '@nx/esbuild:esbuild',\n '@nx/react-native:run-ios',\n '@nx/react-native:start',\n '@nx/react-native:run-android',\n '@nx/react-native:bundle',\n '@nx/react-native:build-android',\n '@nx/react-native:bundle',\n '@nx/next:build',\n '@nx/js:tsc',\n '@nrwl/angular:ng-packagr-lite',\n '@nrwl/angular:package',\n '@nrwl/angular:webpack-browser',\n '@nrwl/esbuild:esbuild',\n '@nrwl/react-native:run-ios',\n '@nrwl/react-native:start',\n '@nrwl/react-native:run-android',\n '@nrwl/react-native:bundle',\n '@nrwl/react-native:build-android',\n '@nrwl/react-native:bundle',\n '@nrwl/next:build',\n '@nrwl/js:tsc',\n '@angular-devkit/build-angular:browser',\n '@angular-devkit/build-angular:browser-esbuild',\n '@angular-devkit/build-angular:application',\n ];\n\n // We try to find the target that is using the supported executors\n // for build since this is the one we will be converting\n for (const target in targets) {\n const executorName = targets[target].executor;\n if (supportedExecutors.build.includes(executorName)) {\n output.supported = target;\n } else if (unsupportedExecutors.includes(executorName)) {\n output.unsupported = target;\n }\n }\n return output;\n}\n\nexport function addOrChangeTestTarget(\n tree: Tree,\n options: VitestGeneratorSchema,\n hasPlugin: boolean\n) {\n const nxJson = readNxJson(tree);\n\n hasPlugin = nxJson.plugins?.some((p) =>\n typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin' || hasPlugin\n );\n\n if (hasPlugin) {\n return;\n }\n\n const project = readProjectConfiguration(tree, options.project);\n const target = options.testTarget ?? 'test';\n\n const reportsDirectory = joinPathFragments(\n offsetFromRoot(project.root),\n 'coverage',\n project.root === '.' ? options.project : project.root\n );\n const testOptions: VitestExecutorOptions = {\n reportsDirectory,\n };\n\n project.targets ??= {};\n\n if (project.targets[target]) {\n throw new Error(`Target \"${target}\" already exists in the project.`);\n } else {\n project.targets[target] = {\n executor: '@nx/vite:test',\n outputs: ['{options.reportsDirectory}'],\n options: testOptions,\n };\n }\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\nexport function addBuildTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n addBuildTargetDefaults(tree, '@nx/vite:build');\n const project = readProjectConfiguration(tree, options.project);\n\n const isTsSolutionSetup = isUsingTsSolutionSetup(tree);\n const buildOptions: ViteBuildExecutorOptions = {\n outputPath: isTsSolutionSetup\n ? joinPathFragments(project.root, 'dist')\n : joinPathFragments(\n 'dist',\n project.root != '.' ? project.root : options.project\n ),\n };\n project.targets ??= {};\n project.targets[target] = {\n executor: '@nx/vite:build',\n outputs: ['{options.outputPath}'],\n defaultConfiguration: 'production',\n options: buildOptions,\n configurations: {\n development: {\n mode: 'development',\n },\n production: {\n mode: 'production',\n },\n },\n };\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\nexport function addServeTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n project.targets ??= {};\n\n project.targets[target] = {\n executor: '@nx/vite:dev-server',\n defaultConfiguration: 'development',\n options: {\n buildTarget: `${options.project}:build`,\n },\n configurations: {\n development: {\n buildTarget: `${options.project}:build:development`,\n hmr: true,\n },\n production: {\n buildTarget: `${options.project}:build:production`,\n hmr: false,\n },\n },\n };\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\n/**\n * Adds a target for the preview server.\n *\n * @param tree\n * @param options\n * @param serveTarget An existing serve target.\n */\nexport function addPreviewTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n serveTarget: string\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n const previewOptions: VitePreviewServerExecutorOptions = {\n buildTarget: `${options.project}:build`,\n };\n\n project.targets ??= {};\n\n // Update the options from the passed serve target.\n if (project.targets[serveTarget]) {\n const target = project.targets[serveTarget];\n if (target.executor === '@nxext/vite:dev') {\n previewOptions.proxyConfig = target.options.proxyConfig;\n }\n previewOptions['https'] = target.options?.https;\n previewOptions['open'] = target.options?.open;\n }\n\n // Adds a preview target.\n project.targets.preview = {\n dependsOn: ['build'],\n executor: '@nx/vite:preview-server',\n defaultConfiguration: 'development',\n options: previewOptions,\n configurations: {\n development: {\n buildTarget: `${options.project}:build:development`,\n },\n production: {\n buildTarget: `${options.project}:build:production`,\n },\n },\n };\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\nexport function editTsConfig(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema\n) {\n const projectConfig = readProjectConfiguration(tree, options.project);\n\n let tsconfigPath = joinPathFragments(projectConfig.root, 'tsconfig.json');\n const isTsSolutionSetup = isUsingTsSolutionSetup(tree);\n if (isTsSolutionSetup) {\n tsconfigPath = [\n joinPathFragments(projectConfig.root, 'tsconfig.app.json'),\n joinPathFragments(projectConfig.root, 'tsconfig.lib.json'),\n ].find((p) => tree.exists(p));\n }\n const config = readJson(tree, tsconfigPath);\n\n switch (options.uiFramework) {\n case 'react':\n config.compilerOptions = {\n jsx: 'react-jsx',\n allowJs: false,\n esModuleInterop: false,\n allowSyntheticDefaultImports: true,\n strict: true,\n };\n break;\n case 'none':\n if (!isTsSolutionSetup) {\n config.compilerOptions = {\n module: 'commonjs',\n forceConsistentCasingInFileNames: true,\n strict: true,\n noImplicitOverride: true,\n noPropertyAccessFromIndexSignature: true,\n noImplicitReturns: true,\n noFallthroughCasesInSwitch: true,\n };\n }\n break;\n default:\n break;\n }\n\n writeJson(tree, tsconfigPath, config);\n}\n\nexport function deleteWebpackConfig(\n tree: Tree,\n projectRoot: string,\n webpackConfigFilePath?: string\n) {\n const webpackConfigPath =\n webpackConfigFilePath && tree.exists(webpackConfigFilePath)\n ? webpackConfigFilePath\n : tree.exists(`${projectRoot}/webpack.config.js`)\n ? `${projectRoot}/webpack.config.js`\n : tree.exists(`${projectRoot}/webpack.config.ts`)\n ? `${projectRoot}/webpack.config.ts`\n : null;\n if (webpackConfigPath) {\n tree.delete(webpackConfigPath);\n }\n}\n\nexport function moveAndEditIndexHtml(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema\n) {\n const projectConfig = readProjectConfiguration(tree, options.project);\n\n let indexHtmlPath = `${projectConfig.root}/src/index.html`;\n let mainPath = `${projectConfig.root}/src/main.ts${\n options.uiFramework === 'react' ? 'x' : ''\n }`;\n\n if (projectConfig.root !== '.') {\n mainPath = mainPath.replace(projectConfig.root, '');\n }\n\n if (\n !tree.exists(indexHtmlPath) &&\n tree.exists(`${projectConfig.root}/index.html`)\n ) {\n indexHtmlPath = `${projectConfig.root}/index.html`;\n }\n\n if (tree.exists(indexHtmlPath)) {\n const indexHtmlContent = tree.read(indexHtmlPath, 'utf8');\n if (\n !indexHtmlContent.includes(\n `<script type='module' src='${mainPath}'></script>`\n )\n ) {\n tree.write(\n `${projectConfig.root}/index.html`,\n indexHtmlContent.replace(\n '</body>',\n `<script type='module' src='${mainPath}'></script>\n </body>`\n )\n );\n\n if (tree.exists(`${projectConfig.root}/src/index.html`)) {\n tree.delete(`${projectConfig.root}/src/index.html`);\n }\n }\n } else {\n tree.write(\n `${projectConfig.root}/index.html`,\n `<!DOCTYPE html>\n <html lang='en'>\n <head>\n <meta charset='UTF-8' />\n <link rel='icon' href='/favicon.ico' />\n <meta name='viewport' content='width=device-width, initial-scale=1.0' />\n <title>Vite</title>\n </head>\n <body>\n <div id='root'></div>\n <script type='module' src='${mainPath}'></script>\n </body>\n </html>`\n );\n }\n}\n\nexport interface ViteConfigFileOptions {\n project: string;\n includeLib?: boolean;\n includeVitest?: boolean;\n inSourceTests?: boolean;\n testEnvironment?: 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string;\n rollupOptionsExternal?: string[];\n imports?: string[];\n plugins?: string[];\n coverageProvider?: 'v8' | 'istanbul' | 'custom';\n setupFile?: string;\n useEsmExtension?: boolean;\n}\n\nexport function createOrEditViteConfig(\n tree: Tree,\n options: ViteConfigFileOptions,\n onlyVitest: boolean,\n projectAlreadyHasViteTargets?: TargetFlags,\n vitestFileName?: boolean\n) {\n const { root: projectRoot } = readProjectConfiguration(tree, options.project);\n\n const extension = options.useEsmExtension ? 'mts' : 'ts';\n const viteConfigPath = vitestFileName\n ? `${projectRoot}/vitest.config.${extension}`\n : `${projectRoot}/vite.config.${extension}`;\n\n const isUsingTsPlugin = isUsingTsSolutionSetup(tree);\n const buildOutDir = isUsingTsPlugin\n ? './dist'\n : projectRoot === '.'\n ? `./dist/${options.project}`\n : `${offsetFromRoot(projectRoot)}dist/${projectRoot}`;\n\n const buildOption = onlyVitest\n ? ''\n : options.includeLib\n ? ` // Configuration for building your library.\n // See: https://vitejs.dev/guide/build.html#library-mode\n build: {\n outDir: '${buildOutDir}',\n emptyOutDir: true,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n lib: {\n // Could also be a dictionary or array of multiple entry points.\n entry: 'src/index.ts',\n name: '${options.project}',\n fileName: 'index',\n // Change this to the formats you want to support.\n // Don't forget to update your package.json as well.\n formats: ['es' as const]\n },\n rollupOptions: {\n // External packages that should not be bundled into your library.\n external: [${options.rollupOptionsExternal ?? ''}]\n },\n },`\n : ` build: {\n outDir: '${buildOutDir}',\n emptyOutDir: true,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n },`;\n\n const imports: string[] = options.imports ? [...options.imports] : [];\n const plugins: string[] = options.plugins ? [...options.plugins] : [];\n\n if (!onlyVitest && options.includeLib) {\n imports.push(\n `import dts from 'vite-plugin-dts'`,\n `import * as path from 'path'`\n );\n }\n\n if (!isUsingTsPlugin) {\n imports.push(\n `import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'`,\n `import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'`\n );\n plugins.push(`nxViteTsPaths()`, `nxCopyAssetsPlugin(['*.md'])`);\n }\n\n if (!onlyVitest && options.includeLib) {\n plugins.push(\n `dts({ entryRoot: 'src', tsconfigPath: path.join(__dirname, 'tsconfig.lib.json') })`\n );\n }\n\n const reportsDirectory = isUsingTsPlugin\n ? './test-output/vitest/coverage'\n : projectRoot === '.'\n ? `./coverage/${options.project}`\n : `${offsetFromRoot(projectRoot)}coverage/${projectRoot}`;\n\n const testOption = options.includeVitest\n ? ` test: {\n watch: false,\n globals: true,\n environment: '${options.testEnvironment ?? 'jsdom'}',\n include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\n${options.setupFile ? ` setupFiles: ['${options.setupFile}'],\\n` : ''}\\\n${\n options.inSourceTests\n ? ` includeSource: ['src/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\\n`\n : ''\n}\\\n reporters: ['default'],\n coverage: {\n reportsDirectory: '${reportsDirectory}',\n provider: ${\n options.coverageProvider\n ? `'${options.coverageProvider}' as const`\n : `'v8' as const`\n },\n }\n },`\n : '';\n\n const defineOption = options.inSourceTests\n ? ` define: {\n 'import.meta.vitest': undefined\n },`\n : '';\n\n const devServerOption = onlyVitest\n ? ''\n : options.includeLib\n ? ''\n : ` server:{\n port: 4200,\n host: 'localhost',\n },`;\n\n const previewServerOption = onlyVitest\n ? ''\n : options.includeLib\n ? ''\n : ` preview:{\n port: 4300,\n host: 'localhost',\n },`;\n\n const workerOption = ` // Uncomment this if you are using workers.\n // worker: {\n // plugins: [ nxViteTsPaths() ],\n // },`;\n\n const cacheDir = `cacheDir: '${normalizedJoinPaths(\n offsetFromRoot(projectRoot),\n 'node_modules',\n '.vite',\n projectRoot === '.' ? options.project : projectRoot\n )}',`;\n\n if (tree.exists(viteConfigPath)) {\n handleViteConfigFileExists(\n tree,\n viteConfigPath,\n options,\n buildOption,\n buildOutDir,\n imports,\n plugins,\n testOption,\n reportsDirectory,\n cacheDir,\n projectRoot,\n offsetFromRoot(projectRoot),\n projectAlreadyHasViteTargets\n );\n return;\n }\n\n const viteConfigContent = `/// <reference types='vitest' />\nimport { defineConfig } from 'vite';\n${imports.join(';\\n')}${imports.length ? ';' : ''}\n\nexport default defineConfig(() => ({\n root: __dirname,\n ${printOptions(\n cacheDir,\n devServerOption,\n previewServerOption,\n ` plugins: [${plugins.join(', ')}],`,\n workerOption,\n buildOption,\n defineOption,\n testOption\n )}\n}));\n`.replace(/\\s+(?=(\\n|$))/gm, '\\n');\n\n tree.write(viteConfigPath, viteConfigContent);\n}\n\nfunction printOptions(...options: string[]): string {\n return options.filter(Boolean).join('\\n');\n}\n\nexport function normalizeViteConfigFilePathWithTree(\n tree: Tree,\n projectRoot: string,\n configFile?: string\n): string {\n return configFile && tree.exists(configFile)\n ? configFile\n : tree.exists(joinPathFragments(`${projectRoot}/vite.config.ts`))\n ? joinPathFragments(`${projectRoot}/vite.config.ts`)\n : tree.exists(joinPathFragments(`${projectRoot}/vite.config.js`))\n ? joinPathFragments(`${projectRoot}/vite.config.js`)\n : undefined;\n}\n\nexport function getViteConfigPathForProject(\n tree: Tree,\n projectName: string,\n target?: string\n) {\n let viteConfigPath: string | undefined;\n const { targets, root } = readProjectConfiguration(tree, projectName);\n if (target) {\n viteConfigPath = targets?.[target]?.options?.configFile;\n } else {\n const config = Object.values(targets).find(\n (config) =>\n config.executor === '@nrwl/nx:build' ||\n config.executor === '@nrwl/vite:build'\n );\n viteConfigPath = config?.options?.configFile;\n }\n\n return normalizeViteConfigFilePathWithTree(tree, root, viteConfigPath);\n}\n\nexport async function handleUnsupportedUserProvidedTargets(\n userProvidedTargetIsUnsupported: TargetFlags,\n userProvidedTargetName: UserProvidedTargetName,\n validFoundTargetName: ValidFoundTargetName\n) {\n if (userProvidedTargetIsUnsupported.build && validFoundTargetName.build) {\n await handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName.build,\n validFoundTargetName.build,\n 'build',\n 'build'\n );\n }\n\n if (userProvidedTargetIsUnsupported.serve && validFoundTargetName.serve) {\n await handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName.serve,\n validFoundTargetName.serve,\n 'serve',\n 'dev-server'\n );\n }\n\n if (userProvidedTargetIsUnsupported.test && validFoundTargetName.test) {\n await handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName.test,\n validFoundTargetName.test,\n 'test',\n 'test'\n );\n }\n}\n\nasync function handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName: string,\n validFoundTargetName: string,\n target: Target,\n executor: 'build' | 'dev-server' | 'test'\n) {\n logger.warn(\n `The custom ${target} target you provided (${userProvidedTargetName}) cannot be converted to use the @nx/vite:${executor} executor.\n However, we found the following ${target} target in your project that can be converted: ${validFoundTargetName}\n\n Please note that converting a potentially non-compatible project to use Vite.js may result in unexpected behavior. Always commit\n your changes before converting a project to use Vite.js, and test the converted project thoroughly before deploying it.\n `\n );\n const { Confirm } = require('enquirer');\n const prompt = new Confirm({\n name: 'question',\n message: `Should we convert the ${validFoundTargetName} target to use the @nx/vite:${executor} executor?`,\n initial: true,\n });\n const shouldConvert = await prompt.run();\n if (!shouldConvert) {\n throw new Error(\n `The ${target} target ${userProvidedTargetName} cannot be converted to use the @nx/vite:${executor} executor.\n Please try again, either by providing a different ${target} target or by not providing a target at all (Nx will\n convert the first one it finds, most probably this one: ${validFoundTargetName})\n\n Please note that converting a potentially non-compatible project to use Vite.js may result in unexpected behavior. Always commit\n your changes before converting a project to use Vite.js, and test the converted project thoroughly before deploying it.\n `\n );\n }\n}\n\nexport async function handleUnknownConfiguration(projectName: string) {\n if (process.env.NX_INTERACTIVE === 'false') {\n return;\n }\n\n logger.warn(\n `\n We could not find any configuration in project ${projectName} that \n indicates whether we can definitely convert to Vite.\n \n If you still want to convert your project to use Vite,\n please make sure to commit your changes before running this generator.\n `\n );\n\n const { Confirm } = require('enquirer');\n const prompt = new Confirm({\n name: 'question',\n message: `Should Nx convert your project to use Vite?`,\n initial: true,\n });\n const shouldConvert = await prompt.run();\n if (!shouldConvert) {\n throw new Error(`\n Nx could not verify that your project can be converted to use Vite.\n Please try again with a different project.\n `);\n }\n}\n\nfunction handleViteConfigFileExists(\n tree: Tree,\n viteConfigPath: string,\n options: ViteConfigFileOptions,\n buildOption: string,\n buildOutDir: string,\n imports: string[],\n plugins: string[],\n testOption: string,\n reportsDirectory: string,\n cacheDir: string,\n projectRoot: string,\n offsetFromRoot: string,\n projectAlreadyHasViteTargets?: TargetFlags\n) {\n if (\n projectAlreadyHasViteTargets?.build &&\n projectAlreadyHasViteTargets?.test\n ) {\n return;\n }\n\n if (process.env.NX_VERBOSE_LOGGING === 'true') {\n logger.info(\n `vite.config.ts already exists for project ${options.project}.`\n );\n }\n\n const buildOptionObject = options.includeLib\n ? {\n lib: {\n entry: 'src/index.ts',\n name: options.project,\n fileName: 'index',\n formats: ['es'],\n },\n rollupOptions: {\n external: options.rollupOptionsExternal ?? [],\n },\n outDir: buildOutDir,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n }\n : {\n outDir: buildOutDir,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n };\n\n const testOptionObject = {\n globals: true,\n environment: options.testEnvironment ?? 'jsdom',\n include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\n reporters: ['default'],\n coverage: {\n reportsDirectory: reportsDirectory,\n provider: `'${options.coverageProvider ?? 'v8'}'`,\n },\n };\n\n const changed = ensureViteConfigIsCorrect(\n tree,\n viteConfigPath,\n buildOption,\n buildOptionObject,\n imports,\n plugins,\n testOption,\n testOptionObject,\n cacheDir,\n projectAlreadyHasViteTargets ?? {}\n );\n\n if (!changed) {\n logger.warn(\n `Make sure the following setting exists in your Vite configuration file (${viteConfigPath}):\n \n ${buildOption}\n \n `\n );\n }\n}\n\nfunction normalizedJoinPaths(...paths: string[]): string {\n const path = joinPathFragments(...paths);\n\n return path.startsWith('.') ? path : `./${path}`;\n}\n"],"names":["addBuildTarget","addOrChangeTestTarget","addPreviewTarget","addServeTarget","createOrEditViteConfig","deleteWebpackConfig","editTsConfig","findExistingJsBuildTargetInProject","getViteConfigPathForProject","handleUnknownConfiguration","handleUnsupportedUserProvidedTargets","moveAndEditIndexHtml","normalizeViteConfigFilePathWithTree","targets","output","supportedExecutors","build","unsupportedExecutors","target","executorName","executor","includes","supported","unsupported","tree","options","hasPlugin","nxJson","project","readNxJson","plugins","some","p","plugin","readProjectConfiguration","testTarget","reportsDirectory","joinPathFragments","offsetFromRoot","root","testOptions","Error","outputs","updateProjectConfiguration","addBuildTargetDefaults","isTsSolutionSetup","isUsingTsSolutionSetup","buildOptions","outputPath","defaultConfiguration","configurations","development","mode","production","buildTarget","hmr","serveTarget","previewOptions","proxyConfig","https","open","preview","dependsOn","projectConfig","tsconfigPath","find","exists","config","readJson","uiFramework","compilerOptions","jsx","allowJs","esModuleInterop","allowSyntheticDefaultImports","strict","module","forceConsistentCasingInFileNames","noImplicitOverride","noPropertyAccessFromIndexSignature","noImplicitReturns","noFallthroughCasesInSwitch","writeJson","projectRoot","webpackConfigFilePath","webpackConfigPath","delete","indexHtmlPath","mainPath","replace","indexHtmlContent","read","write","onlyVitest","projectAlreadyHasViteTargets","vitestFileName","extension","useEsmExtension","viteConfigPath","isUsingTsPlugin","buildOutDir","buildOption","includeLib","rollupOptionsExternal","imports","push","testOption","includeVitest","testEnvironment","setupFile","inSourceTests","coverageProvider","defineOption","devServerOption","previewServerOption","workerOption","cacheDir","normalizedJoinPaths","handleViteConfigFileExists","viteConfigContent","join","length","printOptions","filter","Boolean","configFile","undefined","projectName","Object","values","userProvidedTargetIsUnsupported","userProvidedTargetName","validFoundTargetName","handleUnsupportedUserProvidedTargetsErrors","serve","test","logger","warn","Confirm","require","prompt","name","message","initial","shouldConvert","run","process","env","NX_INTERACTIVE","NX_VERBOSE_LOGGING","info","buildOptionObject","lib","entry","fileName","formats","rollupOptions","external","outDir","reportCompressedSize","commonjsOptions","transformMixedEsModules","testOptionObject","globals","environment","include","reporters","coverage","provider","changed","ensureViteConfigIsCorrect","paths","path","startsWith"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../packages/vite/src/utils/generator-utils.ts"],"sourcesContent":["import {\n joinPathFragments,\n logger,\n offsetFromRoot,\n readJson,\n readNxJson,\n readProjectConfiguration,\n TargetConfiguration,\n Tree,\n updateProjectConfiguration,\n writeJson,\n} from '@nx/devkit';\nimport { addBuildTargetDefaults } from '@nx/devkit/src/generators/target-defaults-utils';\nimport { isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { ViteBuildExecutorOptions } from '../executors/build/schema';\nimport { VitePreviewServerExecutorOptions } from '../executors/preview-server/schema';\nimport { VitestExecutorOptions } from '../executors/test/schema';\nimport { ViteConfigurationGeneratorSchema } from '../generators/configuration/schema';\nimport { ensureViteConfigIsCorrect } from './vite-config-edit-utils';\nimport { VitestGeneratorSchema } from '../generators/vitest/schema';\n\nexport type Target = 'build' | 'serve' | 'test' | 'preview';\nexport type TargetFlags = Partial<Record<Target, boolean>>;\nexport type UserProvidedTargetName = Partial<Record<Target, string>>;\nexport type ValidFoundTargetName = Partial<Record<Target, string>>;\n\nexport function findExistingJsBuildTargetInProject(targets: {\n [targetName: string]: TargetConfiguration;\n}): {\n supported?: string;\n unsupported?: string;\n} {\n const output: {\n supported?: string;\n unsupported?: string;\n } = {};\n\n const supportedExecutors = {\n build: ['@nx/js:babel', '@nx/js:swc', '@nx/rollup:rollup'],\n };\n const unsupportedExecutors = [\n '@nx/angular:ng-packagr-lite',\n '@nx/angular:package',\n '@nx/angular:webpack-browser',\n '@nx/esbuild:esbuild',\n '@nx/react-native:run-ios',\n '@nx/react-native:start',\n '@nx/react-native:run-android',\n '@nx/react-native:bundle',\n '@nx/react-native:build-android',\n '@nx/react-native:bundle',\n '@nx/next:build',\n '@nx/js:tsc',\n '@nrwl/angular:ng-packagr-lite',\n '@nrwl/angular:package',\n '@nrwl/angular:webpack-browser',\n '@nrwl/esbuild:esbuild',\n '@nrwl/react-native:run-ios',\n '@nrwl/react-native:start',\n '@nrwl/react-native:run-android',\n '@nrwl/react-native:bundle',\n '@nrwl/react-native:build-android',\n '@nrwl/react-native:bundle',\n '@nrwl/next:build',\n '@nrwl/js:tsc',\n '@angular-devkit/build-angular:browser',\n '@angular-devkit/build-angular:browser-esbuild',\n '@angular-devkit/build-angular:application',\n ];\n\n // We try to find the target that is using the supported executors\n // for build since this is the one we will be converting\n for (const target in targets) {\n const executorName = targets[target].executor;\n if (supportedExecutors.build.includes(executorName)) {\n output.supported = target;\n } else if (unsupportedExecutors.includes(executorName)) {\n output.unsupported = target;\n }\n }\n return output;\n}\n\nexport function addOrChangeTestTarget(\n tree: Tree,\n options: VitestGeneratorSchema,\n hasPlugin: boolean\n) {\n const nxJson = readNxJson(tree);\n\n hasPlugin = nxJson.plugins?.some((p) =>\n typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin' || hasPlugin\n );\n\n if (hasPlugin) {\n return;\n }\n\n const project = readProjectConfiguration(tree, options.project);\n const target = options.testTarget ?? 'test';\n\n const reportsDirectory = joinPathFragments(\n offsetFromRoot(project.root),\n 'coverage',\n project.root === '.' ? options.project : project.root\n );\n const testOptions: VitestExecutorOptions = {\n reportsDirectory,\n };\n\n project.targets ??= {};\n\n if (project.targets[target]) {\n throw new Error(`Target \"${target}\" already exists in the project.`);\n } else {\n project.targets[target] = {\n executor: '@nx/vite:test',\n outputs: ['{options.reportsDirectory}'],\n options: testOptions,\n };\n }\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\nexport function addBuildTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n addBuildTargetDefaults(tree, '@nx/vite:build');\n const project = readProjectConfiguration(tree, options.project);\n\n const isTsSolutionSetup = isUsingTsSolutionSetup(tree);\n const buildOptions: ViteBuildExecutorOptions = {\n outputPath: isTsSolutionSetup\n ? joinPathFragments(project.root, 'dist')\n : joinPathFragments(\n 'dist',\n project.root != '.' ? project.root : options.project\n ),\n };\n project.targets ??= {};\n project.targets[target] = {\n executor: '@nx/vite:build',\n outputs: ['{options.outputPath}'],\n defaultConfiguration: 'production',\n options: buildOptions,\n configurations: {\n development: {\n mode: 'development',\n },\n production: {\n mode: 'production',\n },\n },\n };\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\nexport function addServeTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n project.targets ??= {};\n\n project.targets[target] = {\n executor: '@nx/vite:dev-server',\n defaultConfiguration: 'development',\n options: {\n buildTarget: `${options.project}:build`,\n },\n configurations: {\n development: {\n buildTarget: `${options.project}:build:development`,\n hmr: true,\n },\n production: {\n buildTarget: `${options.project}:build:production`,\n hmr: false,\n },\n },\n };\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\n/**\n * Adds a target for the preview server.\n *\n * @param tree\n * @param options\n * @param serveTarget An existing serve target.\n */\nexport function addPreviewTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n serveTarget: string\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n const previewOptions: VitePreviewServerExecutorOptions = {\n buildTarget: `${options.project}:build`,\n };\n\n project.targets ??= {};\n\n // Update the options from the passed serve target.\n if (project.targets[serveTarget]) {\n const target = project.targets[serveTarget];\n if (target.executor === '@nxext/vite:dev') {\n previewOptions.proxyConfig = target.options.proxyConfig;\n }\n previewOptions['https'] = target.options?.https;\n previewOptions['open'] = target.options?.open;\n }\n\n // Adds a preview target.\n project.targets.preview = {\n dependsOn: ['build'],\n executor: '@nx/vite:preview-server',\n defaultConfiguration: 'development',\n options: previewOptions,\n configurations: {\n development: {\n buildTarget: `${options.project}:build:development`,\n },\n production: {\n buildTarget: `${options.project}:build:production`,\n },\n },\n };\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\nexport function editTsConfig(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema\n) {\n const projectConfig = readProjectConfiguration(tree, options.project);\n\n let tsconfigPath = joinPathFragments(projectConfig.root, 'tsconfig.json');\n const isTsSolutionSetup = isUsingTsSolutionSetup(tree);\n if (isTsSolutionSetup) {\n tsconfigPath = [\n joinPathFragments(projectConfig.root, 'tsconfig.app.json'),\n joinPathFragments(projectConfig.root, 'tsconfig.lib.json'),\n ].find((p) => tree.exists(p));\n }\n const config = readJson(tree, tsconfigPath);\n\n switch (options.uiFramework) {\n case 'react':\n config.compilerOptions = {\n jsx: 'react-jsx',\n allowJs: false,\n esModuleInterop: false,\n allowSyntheticDefaultImports: true,\n strict: true,\n };\n break;\n case 'none':\n if (!isTsSolutionSetup) {\n config.compilerOptions = {\n module: 'commonjs',\n forceConsistentCasingInFileNames: true,\n strict: true,\n noImplicitOverride: true,\n noPropertyAccessFromIndexSignature: true,\n noImplicitReturns: true,\n noFallthroughCasesInSwitch: true,\n };\n }\n break;\n default:\n break;\n }\n\n writeJson(tree, tsconfigPath, config);\n}\n\nexport function deleteWebpackConfig(\n tree: Tree,\n projectRoot: string,\n webpackConfigFilePath?: string\n) {\n const webpackConfigPath =\n webpackConfigFilePath && tree.exists(webpackConfigFilePath)\n ? webpackConfigFilePath\n : tree.exists(`${projectRoot}/webpack.config.js`)\n ? `${projectRoot}/webpack.config.js`\n : tree.exists(`${projectRoot}/webpack.config.ts`)\n ? `${projectRoot}/webpack.config.ts`\n : null;\n if (webpackConfigPath) {\n tree.delete(webpackConfigPath);\n }\n}\n\nexport function moveAndEditIndexHtml(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema\n) {\n const projectConfig = readProjectConfiguration(tree, options.project);\n\n let indexHtmlPath = `${projectConfig.root}/src/index.html`;\n let mainPath = `${projectConfig.root}/src/main.ts${\n options.uiFramework === 'react' ? 'x' : ''\n }`;\n\n if (projectConfig.root !== '.') {\n mainPath = mainPath.replace(projectConfig.root, '');\n }\n\n if (\n !tree.exists(indexHtmlPath) &&\n tree.exists(`${projectConfig.root}/index.html`)\n ) {\n indexHtmlPath = `${projectConfig.root}/index.html`;\n }\n\n if (tree.exists(indexHtmlPath)) {\n const indexHtmlContent = tree.read(indexHtmlPath, 'utf8');\n if (\n !indexHtmlContent.includes(\n `<script type='module' src='${mainPath}'></script>`\n )\n ) {\n tree.write(\n `${projectConfig.root}/index.html`,\n indexHtmlContent.replace(\n '</body>',\n `<script type='module' src='${mainPath}'></script>\n </body>`\n )\n );\n\n if (tree.exists(`${projectConfig.root}/src/index.html`)) {\n tree.delete(`${projectConfig.root}/src/index.html`);\n }\n }\n } else {\n tree.write(\n `${projectConfig.root}/index.html`,\n `<!DOCTYPE html>\n <html lang='en'>\n <head>\n <meta charset='UTF-8' />\n <link rel='icon' href='/favicon.ico' />\n <meta name='viewport' content='width=device-width, initial-scale=1.0' />\n <title>Vite</title>\n </head>\n <body>\n <div id='root'></div>\n <script type='module' src='${mainPath}'></script>\n </body>\n </html>`\n );\n }\n}\n\nexport interface ViteConfigFileOptions {\n project: string;\n includeLib?: boolean;\n includeVitest?: boolean;\n inSourceTests?: boolean;\n testEnvironment?: 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string;\n rollupOptionsExternal?: string[];\n imports?: string[];\n plugins?: string[];\n coverageProvider?: 'v8' | 'istanbul' | 'custom';\n setupFile?: string;\n useEsmExtension?: boolean;\n port?: number;\n previewPort?: number;\n}\n\nexport function createOrEditViteConfig(\n tree: Tree,\n options: ViteConfigFileOptions,\n onlyVitest: boolean,\n projectAlreadyHasViteTargets?: TargetFlags,\n vitestFileName?: boolean\n) {\n const { root: projectRoot } = readProjectConfiguration(tree, options.project);\n\n const extension = options.useEsmExtension ? 'mts' : 'ts';\n const viteConfigPath = vitestFileName\n ? `${projectRoot}/vitest.config.${extension}`\n : `${projectRoot}/vite.config.${extension}`;\n\n const isTsSolutionSetup = isUsingTsSolutionSetup(tree);\n const buildOutDir = isTsSolutionSetup\n ? './dist'\n : projectRoot === '.'\n ? `./dist/${options.project}`\n : `${offsetFromRoot(projectRoot)}dist/${projectRoot}`;\n\n const buildOption = onlyVitest\n ? ''\n : options.includeLib\n ? ` // Configuration for building your library.\n // See: https://vitejs.dev/guide/build.html#library-mode\n build: {\n outDir: '${buildOutDir}',\n emptyOutDir: true,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n lib: {\n // Could also be a dictionary or array of multiple entry points.\n entry: 'src/index.ts',\n name: '${options.project}',\n fileName: 'index',\n // Change this to the formats you want to support.\n // Don't forget to update your package.json as well.\n formats: ['es' as const]\n },\n rollupOptions: {\n // External packages that should not be bundled into your library.\n external: [${options.rollupOptionsExternal ?? ''}]\n },\n },`\n : ` build: {\n outDir: '${buildOutDir}',\n emptyOutDir: true,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n },`;\n\n const imports: string[] = options.imports ? [...options.imports] : [];\n const plugins: string[] = options.plugins ? [...options.plugins] : [];\n\n if (!onlyVitest && options.includeLib) {\n imports.push(\n `import dts from 'vite-plugin-dts'`,\n `import * as path from 'path'`\n );\n }\n\n if (!isTsSolutionSetup) {\n imports.push(\n `import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'`,\n `import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'`\n );\n plugins.push(`nxViteTsPaths()`, `nxCopyAssetsPlugin(['*.md'])`);\n }\n\n if (!onlyVitest && options.includeLib) {\n plugins.push(\n `dts({ entryRoot: 'src', tsconfigPath: path.join(__dirname, 'tsconfig.lib.json')${\n !isTsSolutionSetup ? ', pathsToAliases: false' : ''\n } })`\n );\n }\n\n const reportsDirectory = isTsSolutionSetup\n ? './test-output/vitest/coverage'\n : projectRoot === '.'\n ? `./coverage/${options.project}`\n : `${offsetFromRoot(projectRoot)}coverage/${projectRoot}`;\n\n const testOption = options.includeVitest\n ? ` test: {\n watch: false,\n globals: true,\n environment: '${options.testEnvironment ?? 'jsdom'}',\n include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\n${options.setupFile ? ` setupFiles: ['${options.setupFile}'],\\n` : ''}\\\n${\n options.inSourceTests\n ? ` includeSource: ['src/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\\n`\n : ''\n}\\\n reporters: ['default'],\n coverage: {\n reportsDirectory: '${reportsDirectory}',\n provider: ${\n options.coverageProvider\n ? `'${options.coverageProvider}' as const`\n : `'v8' as const`\n },\n }\n },`\n : '';\n\n const defineOption = options.inSourceTests\n ? ` define: {\n 'import.meta.vitest': undefined\n },`\n : '';\n\n const devServerOption = onlyVitest\n ? ''\n : options.includeLib\n ? ''\n : ` server:{\n port: ${options.port ?? 4200},\n host: 'localhost',\n },`;\n\n const previewServerOption = onlyVitest\n ? ''\n : options.includeLib\n ? ''\n : ` preview:{\n port: ${options.previewPort ?? 4300},\n host: 'localhost',\n },`;\n\n const workerOption = ` // Uncomment this if you are using workers.\n // worker: {\n // plugins: [ nxViteTsPaths() ],\n // },`;\n\n const cacheDir = `cacheDir: '${normalizedJoinPaths(\n offsetFromRoot(projectRoot),\n 'node_modules',\n '.vite',\n projectRoot === '.' ? options.project : projectRoot\n )}',`;\n\n if (tree.exists(viteConfigPath)) {\n handleViteConfigFileExists(\n tree,\n viteConfigPath,\n options,\n buildOption,\n buildOutDir,\n imports,\n plugins,\n testOption,\n reportsDirectory,\n cacheDir,\n projectRoot,\n offsetFromRoot(projectRoot),\n projectAlreadyHasViteTargets\n );\n return;\n }\n\n const viteConfigContent = `/// <reference types='vitest' />\nimport { defineConfig } from 'vite';\n${imports.join(';\\n')}${imports.length ? ';' : ''}\n\nexport default defineConfig(() => ({\n root: __dirname,\n ${printOptions(\n cacheDir,\n devServerOption,\n previewServerOption,\n ` plugins: [${plugins.join(', ')}],`,\n workerOption,\n buildOption,\n defineOption,\n testOption\n )}\n}));\n`.replace(/\\s+(?=(\\n|$))/gm, '\\n');\n\n tree.write(viteConfigPath, viteConfigContent);\n}\n\nfunction printOptions(...options: string[]): string {\n return options.filter(Boolean).join('\\n');\n}\n\nexport function normalizeViteConfigFilePathWithTree(\n tree: Tree,\n projectRoot: string,\n configFile?: string\n): string {\n return configFile && tree.exists(configFile)\n ? configFile\n : tree.exists(joinPathFragments(`${projectRoot}/vite.config.ts`))\n ? joinPathFragments(`${projectRoot}/vite.config.ts`)\n : tree.exists(joinPathFragments(`${projectRoot}/vite.config.js`))\n ? joinPathFragments(`${projectRoot}/vite.config.js`)\n : undefined;\n}\n\nexport function getViteConfigPathForProject(\n tree: Tree,\n projectName: string,\n target?: string\n) {\n let viteConfigPath: string | undefined;\n const { targets, root } = readProjectConfiguration(tree, projectName);\n if (target) {\n viteConfigPath = targets?.[target]?.options?.configFile;\n } else {\n const config = Object.values(targets).find(\n (config) =>\n config.executor === '@nrwl/nx:build' ||\n config.executor === '@nrwl/vite:build'\n );\n viteConfigPath = config?.options?.configFile;\n }\n\n return normalizeViteConfigFilePathWithTree(tree, root, viteConfigPath);\n}\n\nexport async function handleUnsupportedUserProvidedTargets(\n userProvidedTargetIsUnsupported: TargetFlags,\n userProvidedTargetName: UserProvidedTargetName,\n validFoundTargetName: ValidFoundTargetName\n) {\n if (userProvidedTargetIsUnsupported.build && validFoundTargetName.build) {\n await handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName.build,\n validFoundTargetName.build,\n 'build',\n 'build'\n );\n }\n\n if (userProvidedTargetIsUnsupported.serve && validFoundTargetName.serve) {\n await handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName.serve,\n validFoundTargetName.serve,\n 'serve',\n 'dev-server'\n );\n }\n\n if (userProvidedTargetIsUnsupported.test && validFoundTargetName.test) {\n await handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName.test,\n validFoundTargetName.test,\n 'test',\n 'test'\n );\n }\n}\n\nasync function handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName: string,\n validFoundTargetName: string,\n target: Target,\n executor: 'build' | 'dev-server' | 'test'\n) {\n logger.warn(\n `The custom ${target} target you provided (${userProvidedTargetName}) cannot be converted to use the @nx/vite:${executor} executor.\n However, we found the following ${target} target in your project that can be converted: ${validFoundTargetName}\n\n Please note that converting a potentially non-compatible project to use Vite.js may result in unexpected behavior. Always commit\n your changes before converting a project to use Vite.js, and test the converted project thoroughly before deploying it.\n `\n );\n const { Confirm } = require('enquirer');\n const prompt = new Confirm({\n name: 'question',\n message: `Should we convert the ${validFoundTargetName} target to use the @nx/vite:${executor} executor?`,\n initial: true,\n });\n const shouldConvert = await prompt.run();\n if (!shouldConvert) {\n throw new Error(\n `The ${target} target ${userProvidedTargetName} cannot be converted to use the @nx/vite:${executor} executor.\n Please try again, either by providing a different ${target} target or by not providing a target at all (Nx will\n convert the first one it finds, most probably this one: ${validFoundTargetName})\n\n Please note that converting a potentially non-compatible project to use Vite.js may result in unexpected behavior. Always commit\n your changes before converting a project to use Vite.js, and test the converted project thoroughly before deploying it.\n `\n );\n }\n}\n\nexport async function handleUnknownConfiguration(projectName: string) {\n if (process.env.NX_INTERACTIVE === 'false') {\n return;\n }\n\n logger.warn(\n `\n We could not find any configuration in project ${projectName} that \n indicates whether we can definitely convert to Vite.\n \n If you still want to convert your project to use Vite,\n please make sure to commit your changes before running this generator.\n `\n );\n\n const { Confirm } = require('enquirer');\n const prompt = new Confirm({\n name: 'question',\n message: `Should Nx convert your project to use Vite?`,\n initial: true,\n });\n const shouldConvert = await prompt.run();\n if (!shouldConvert) {\n throw new Error(`\n Nx could not verify that your project can be converted to use Vite.\n Please try again with a different project.\n `);\n }\n}\n\nfunction handleViteConfigFileExists(\n tree: Tree,\n viteConfigPath: string,\n options: ViteConfigFileOptions,\n buildOption: string,\n buildOutDir: string,\n imports: string[],\n plugins: string[],\n testOption: string,\n reportsDirectory: string,\n cacheDir: string,\n projectRoot: string,\n offsetFromRoot: string,\n projectAlreadyHasViteTargets?: TargetFlags\n) {\n if (\n projectAlreadyHasViteTargets?.build &&\n projectAlreadyHasViteTargets?.test\n ) {\n return;\n }\n\n if (process.env.NX_VERBOSE_LOGGING === 'true') {\n logger.info(\n `vite.config.ts already exists for project ${options.project}.`\n );\n }\n\n const buildOptionObject = options.includeLib\n ? {\n lib: {\n entry: 'src/index.ts',\n name: options.project,\n fileName: 'index',\n formats: ['es'],\n },\n rollupOptions: {\n external: options.rollupOptionsExternal ?? [],\n },\n outDir: buildOutDir,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n }\n : {\n outDir: buildOutDir,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n };\n\n const testOptionObject = {\n globals: true,\n environment: options.testEnvironment ?? 'jsdom',\n include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\n reporters: ['default'],\n coverage: {\n reportsDirectory: reportsDirectory,\n provider: `'${options.coverageProvider ?? 'v8'}'`,\n },\n };\n\n const changed = ensureViteConfigIsCorrect(\n tree,\n viteConfigPath,\n buildOption,\n buildOptionObject,\n imports,\n plugins,\n testOption,\n testOptionObject,\n cacheDir,\n projectAlreadyHasViteTargets ?? {}\n );\n\n if (!changed) {\n logger.warn(\n `Make sure the following setting exists in your Vite configuration file (${viteConfigPath}):\n \n ${buildOption}\n \n `\n );\n }\n}\n\nfunction normalizedJoinPaths(...paths: string[]): string {\n const path = joinPathFragments(...paths);\n\n return path.startsWith('.') ? path : `./${path}`;\n}\n"],"names":["addBuildTarget","addOrChangeTestTarget","addPreviewTarget","addServeTarget","createOrEditViteConfig","deleteWebpackConfig","editTsConfig","findExistingJsBuildTargetInProject","getViteConfigPathForProject","handleUnknownConfiguration","handleUnsupportedUserProvidedTargets","moveAndEditIndexHtml","normalizeViteConfigFilePathWithTree","targets","output","supportedExecutors","build","unsupportedExecutors","target","executorName","executor","includes","supported","unsupported","tree","options","hasPlugin","nxJson","project","readNxJson","plugins","some","p","plugin","readProjectConfiguration","testTarget","reportsDirectory","joinPathFragments","offsetFromRoot","root","testOptions","Error","outputs","updateProjectConfiguration","addBuildTargetDefaults","isTsSolutionSetup","isUsingTsSolutionSetup","buildOptions","outputPath","defaultConfiguration","configurations","development","mode","production","buildTarget","hmr","serveTarget","previewOptions","proxyConfig","https","open","preview","dependsOn","projectConfig","tsconfigPath","find","exists","config","readJson","uiFramework","compilerOptions","jsx","allowJs","esModuleInterop","allowSyntheticDefaultImports","strict","module","forceConsistentCasingInFileNames","noImplicitOverride","noPropertyAccessFromIndexSignature","noImplicitReturns","noFallthroughCasesInSwitch","writeJson","projectRoot","webpackConfigFilePath","webpackConfigPath","delete","indexHtmlPath","mainPath","replace","indexHtmlContent","read","write","onlyVitest","projectAlreadyHasViteTargets","vitestFileName","extension","useEsmExtension","viteConfigPath","buildOutDir","buildOption","includeLib","rollupOptionsExternal","imports","push","testOption","includeVitest","testEnvironment","setupFile","inSourceTests","coverageProvider","defineOption","devServerOption","port","previewServerOption","previewPort","workerOption","cacheDir","normalizedJoinPaths","handleViteConfigFileExists","viteConfigContent","join","length","printOptions","filter","Boolean","configFile","undefined","projectName","Object","values","userProvidedTargetIsUnsupported","userProvidedTargetName","validFoundTargetName","handleUnsupportedUserProvidedTargetsErrors","serve","test","logger","warn","Confirm","require","prompt","name","message","initial","shouldConvert","run","process","env","NX_INTERACTIVE","NX_VERBOSE_LOGGING","info","buildOptionObject","lib","entry","fileName","formats","rollupOptions","external","outDir","reportCompressedSize","commonjsOptions","transformMixedEsModules","testOptionObject","globals","environment","include","reporters","coverage","provider","changed","ensureViteConfigIsCorrect","paths","path","startsWith"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}