@nx/vite 17.3.0-beta.1 → 17.3.0-beta.3

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": "17.3.0-beta.1",
3
+ "version": "17.3.0-beta.3",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for building and testing applications using Vite",
6
6
  "repository": {
@@ -29,13 +29,13 @@
29
29
  "migrations": "./migrations.json"
30
30
  },
31
31
  "dependencies": {
32
- "@nx/devkit": "17.3.0-beta.1",
32
+ "@nx/devkit": "17.3.0-beta.3",
33
33
  "@phenomnomnominal/tsquery": "~5.0.1",
34
34
  "@swc/helpers": "~0.5.0",
35
35
  "enquirer": "~2.3.6",
36
- "@nx/js": "17.3.0-beta.1",
36
+ "@nx/js": "17.3.0-beta.3",
37
37
  "tsconfig-paths": "^4.1.2",
38
- "@nrwl/vite": "17.3.0-beta.1"
38
+ "@nrwl/vite": "17.3.0-beta.3"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "vite": "^5.0.0",
@@ -3,7 +3,7 @@
3
3
  * @param {FileReplacement[]} replacements
4
4
  * @return {({name: "rollup-plugin-replace-files", enforce: "pre" | "post" | undefined, Promise<resolveId>})}
5
5
  */
6
- export default function replaceFiles(replacements: FileReplacement[]): {
6
+ export declare function replaceFiles(replacements: FileReplacement[]): {
7
7
  name: string;
8
8
  enforce: 'pre' | 'post' | undefined;
9
9
  resolveId(source: any, importer: any, options: any): Promise<{
@@ -4,7 +4,7 @@
4
4
  * @param {FileReplacement[]} replacements
5
5
  * @return {({name: "rollup-plugin-replace-files", enforce: "pre" | "post" | undefined, Promise<resolveId>})}
6
6
  */ "use strict";
7
- Object.defineProperty(exports, "default", {
7
+ Object.defineProperty(exports, "replaceFiles", {
8
8
  enumerable: true,
9
9
  get: function() {
10
10
  return replaceFiles;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../packages/vite/plugins/rollup-replace-files.plugin.ts"],"sourcesContent":["// source: https://github.com/Myrmod/vitejs-theming/blob/master/build-plugins/rollup/replace-files.js\n\n/**\n * @function replaceFiles\n * @param {FileReplacement[]} replacements\n * @return {({name: \"rollup-plugin-replace-files\", enforce: \"pre\" | \"post\" | undefined, Promise<resolveId>})}\n */\nexport default function replaceFiles(replacements: FileReplacement[]): {\n name: string;\n enforce: 'pre' | 'post' | undefined;\n resolveId(\n source: any,\n importer: any,\n options: any\n ): Promise<{\n id: string;\n }>;\n} {\n if (!replacements?.length) {\n return null;\n }\n return {\n name: 'rollup-plugin-replace-files',\n enforce: 'pre',\n async resolveId(source, importer, options) {\n const resolved = await this.resolve(source, importer, {\n ...options,\n skipSelf: true,\n });\n /**\n * The reason we're using endsWith here is because the resolved id\n * will be the absolute path to the file. We want to check if the\n * file ends with the file we're trying to replace, which will be essentially\n * the path from the root of our workspace.\n */\n\n const foundReplace = replacements.find((replacement) =>\n resolved?.id?.endsWith(replacement.replace)\n );\n if (foundReplace) {\n console.info(\n `replace \"${foundReplace.replace}\" with \"${foundReplace.with}\"`\n );\n try {\n // return new file content\n return {\n id: foundReplace.with,\n };\n } catch (err) {\n console.error(err);\n return null;\n }\n }\n return null;\n },\n };\n}\n\nexport interface FileReplacement {\n replace: string;\n with: string;\n}\n"],"names":["replaceFiles","replacements","length","name","enforce","resolveId","source","importer","options","resolved","resolve","skipSelf","foundReplace","find","replacement","id","endsWith","replace","console","info","with","err","error"],"mappings":"AAAA,qGAAqG;AAErG;;;;CAIC;+BACD;;;eAAwBA;;;;AAAT,SAASA,aAAaC,YAA+B;IAWlE,IAAI,EAACA,gCAAAA,aAAcC,MAAM,GAAE;QACzB,OAAO;IACT;IACA,OAAO;QACLC,MAAM;QACNC,SAAS;QACT,MAAMC,WAAUC,MAAM,EAAEC,QAAQ,EAAEC,OAAO;YACvC,MAAMC,WAAW,MAAM,IAAI,CAACC,OAAO,CAACJ,QAAQC,UAAU,eACjDC;gBACHG,UAAU;;YAEZ;;;;;OAKC,GAED,MAAMC,eAAeX,aAAaY,IAAI,CAAC,CAACC;oBACtCL;uBAAAA,6BAAAA,eAAAA,SAAUM,EAAE,qBAAZN,aAAcO,QAAQ,CAACF,YAAYG,OAAO;;YAE5C,IAAIL,cAAc;gBAChBM,QAAQC,IAAI,CACV,CAAC,SAAS,EAAEP,aAAaK,OAAO,CAAC,QAAQ,EAAEL,aAAaQ,IAAI,CAAC,CAAC,CAAC;gBAEjE,IAAI;oBACF,0BAA0B;oBAC1B,OAAO;wBACLL,IAAIH,aAAaQ,IAAI;oBACvB;gBACF,EAAE,OAAOC,KAAK;oBACZH,QAAQI,KAAK,CAACD;oBACd,OAAO;gBACT;YACF;YACA,OAAO;QACT;IACF;AACF"}
1
+ {"version":3,"sources":["../../../../packages/vite/plugins/rollup-replace-files.plugin.ts"],"sourcesContent":["// source: https://github.com/Myrmod/vitejs-theming/blob/master/build-plugins/rollup/replace-files.js\n\n/**\n * @function replaceFiles\n * @param {FileReplacement[]} replacements\n * @return {({name: \"rollup-plugin-replace-files\", enforce: \"pre\" | \"post\" | undefined, Promise<resolveId>})}\n */\nexport function replaceFiles(replacements: FileReplacement[]): {\n name: string;\n enforce: 'pre' | 'post' | undefined;\n resolveId(\n source: any,\n importer: any,\n options: any\n ): Promise<{\n id: string;\n }>;\n} {\n if (!replacements?.length) {\n return null;\n }\n return {\n name: 'rollup-plugin-replace-files',\n enforce: 'pre',\n async resolveId(source, importer, options) {\n const resolved = await this.resolve(source, importer, {\n ...options,\n skipSelf: true,\n });\n /**\n * The reason we're using endsWith here is because the resolved id\n * will be the absolute path to the file. We want to check if the\n * file ends with the file we're trying to replace, which will be essentially\n * the path from the root of our workspace.\n */\n\n const foundReplace = replacements.find((replacement) =>\n resolved?.id?.endsWith(replacement.replace)\n );\n if (foundReplace) {\n console.info(\n `replace \"${foundReplace.replace}\" with \"${foundReplace.with}\"`\n );\n try {\n // return new file content\n return {\n id: foundReplace.with,\n };\n } catch (err) {\n console.error(err);\n return null;\n }\n }\n return null;\n },\n };\n}\n\nexport interface FileReplacement {\n replace: string;\n with: string;\n}\n"],"names":["replaceFiles","replacements","length","name","enforce","resolveId","source","importer","options","resolved","resolve","skipSelf","foundReplace","find","replacement","id","endsWith","replace","console","info","with","err","error"],"mappings":"AAAA,qGAAqG;AAErG;;;;CAIC;+BACeA;;;eAAAA;;;;AAAT,SAASA,aAAaC,YAA+B;IAW1D,IAAI,EAACA,gCAAAA,aAAcC,MAAM,GAAE;QACzB,OAAO;IACT;IACA,OAAO;QACLC,MAAM;QACNC,SAAS;QACT,MAAMC,WAAUC,MAAM,EAAEC,QAAQ,EAAEC,OAAO;YACvC,MAAMC,WAAW,MAAM,IAAI,CAACC,OAAO,CAACJ,QAAQC,UAAU,eACjDC;gBACHG,UAAU;;YAEZ;;;;;OAKC,GAED,MAAMC,eAAeX,aAAaY,IAAI,CAAC,CAACC;oBACtCL;uBAAAA,6BAAAA,eAAAA,SAAUM,EAAE,qBAAZN,aAAcO,QAAQ,CAACF,YAAYG,OAAO;;YAE5C,IAAIL,cAAc;gBAChBM,QAAQC,IAAI,CACV,CAAC,SAAS,EAAEP,aAAaK,OAAO,CAAC,QAAQ,EAAEL,aAAaQ,IAAI,CAAC,CAAC,CAAC;gBAEjE,IAAI;oBACF,0BAA0B;oBAC1B,OAAO;wBACLL,IAAIH,aAAaQ,IAAI;oBACvB;gBACF,EAAE,OAAOC,KAAK;oBACZH,QAAQI,KAAK,CAACD;oBACd,OAAO;gBACT;YACF;YACA,OAAO;QACT;IACF;AACF"}
@@ -28,7 +28,7 @@ async function* viteBuildExecutor(options, context) {
28
28
  var _resolved_config_build, _resolved_config;
29
29
  process.env.VITE_CJS_IGNORE_WARNING = 'true';
30
30
  // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.
31
- const { mergeConfig, build, loadConfigFromFile } = await Function('return import("vite")')();
31
+ const { mergeConfig, build, loadConfigFromFile } = await (0, _executorutils.loadViteDynamicImport)();
32
32
  const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
33
33
  (0, _executorutils.createBuildableTsConfig)(projectRoot, options, context);
34
34
  const viteConfigPath = (0, _optionsutils.normalizeViteConfigFilePath)(context.root, projectRoot, options.configFile);
@@ -174,6 +174,8 @@ async function getBuildExtraArgs(options) {
174
174
  otherOptions[key] = extraArgs[key];
175
175
  }
176
176
  }
177
+ var _options_watch;
178
+ buildOptions['watch'] = (_options_watch = options.watch) != null ? _options_watch : undefined;
177
179
  return {
178
180
  buildOptions,
179
181
  otherOptions
@@ -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 { createAsyncIterable } from '@nx/devkit/src/utils/async-iterable';\nimport {\n createBuildableTsConfig,\n validateTypes,\n} from '../../utils/executor-utils';\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, loadConfigFromFile } = await (Function(\n 'return import(\"vite\")'\n )() as Promise<typeof import('vite')>);\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n createBuildableTsConfig(projectRoot, options, context);\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n options.configFile\n );\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n const { buildOptions, otherOptions } = await getBuildExtraArgs(options);\n\n const resolved = await loadConfigFromFile(\n {\n mode: otherOptions?.mode ?? 'production',\n command: 'build',\n },\n viteConfigPath\n );\n\n const outDir =\n joinPathFragments(offsetFromRoot(projectRoot), options.outputPath) ??\n resolved?.config?.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.config.root ?? root,\n configFile: viteConfigPath,\n },\n {\n build: {\n outDir,\n ...buildOptions,\n },\n ...otherOptions,\n }\n );\n\n if (!options.skipTypeCheck) {\n await validateTypes({\n workspaceRoot: context.root,\n projectRoot: projectRoot,\n tsconfig: getProjectTsConfigPath(projectRoot),\n });\n }\n\n const watcherOrOutput = await build(buildConfig);\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/packages/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 }\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 !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 if ('on' in watcherOrOutput) {\n const iterable = createAsyncIterable<{ success: boolean }>(({ next }) => {\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) {\n event.result.close();\n }\n });\n });\n yield* iterable;\n } else {\n const output = watcherOrOutput?.['output'] || watcherOrOutput?.[0]?.output;\n const fileName = output?.[0]?.fileName || 'main.cjs';\n const outfile = resolve(outDirRelativeToWorkspaceRoot, fileName);\n yield { success: true, outfile };\n }\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 return {\n buildOptions,\n otherOptions,\n };\n}\n\nexport default viteBuildExecutor;\n"],"names":["viteBuildExecutor","getBuildExtraArgs","options","context","resolved","process","env","VITE_CJS_IGNORE_WARNING","mergeConfig","build","loadConfigFromFile","Function","projectRoot","projectsConfigurations","projects","projectName","root","createBuildableTsConfig","viteConfigPath","normalizeViteConfigFilePath","configFile","cwd","relative","joinPathFragments","buildOptions","otherOptions","mode","command","outDir","offsetFromRoot","outputPath","config","buildConfig","skipTypeCheck","validateTypes","workspaceRoot","tsconfig","getProjectTsConfigPath","watcherOrOutput","libraryPackageJson","resolve","rootPackageJson","outDirRelativeToWorkspaceRoot","replaceAll","distPackageJson","generatePackageJson","projectGraph","nodes","type","logger","warn","stripIndents","builtPackageJson","createPackageJson","target","targetName","isProduction","includeDevDependenciesInPackageJson","writeJsonFile","packageManager","detectPackageManager","lockFile","createLockFile","writeFileSync","getLockFileName","encoding","existsSync","copyAssets","assets","input","output","glob","iterable","createAsyncIterable","next","success","on","event","code","result","close","fileName","outfile","schema","extraArgs","key","Object","keys","properties","buildSchemaKeys","includes"],"mappings":";;;;;;;;IA4BuBA,iBAAiB;eAAjBA;;IAkKDC,iBAAiB;eAAjBA;;IA4DtB,OAAiC;eAAjC;;;;wBAlPO;8BAIA;oBAOA;oBACmC;sBACR;+BACE;+BAI7B;AAEA,gBAAgBD,kBACrBE,OAAuD,EACvDC,OAAwB;QAiCtBC,wBAAAA;IA/BFC,QAAQC,GAAG,CAACC,uBAAuB,GAAG;IACtC,yFAAyF;IACzF,MAAM,EAAEC,WAAW,EAAEC,KAAK,EAAEC,kBAAkB,EAAE,GAAG,MAAOC,SACxD;IAEF,MAAMC,cACJT,QAAQU,sBAAsB,CAACC,QAAQ,CAACX,QAAQY,WAAW,CAAC,CAACC,IAAI;IACnEC,IAAAA,sCAAuB,EAACL,aAAaV,SAASC;IAE9C,MAAMe,iBAAiBC,IAAAA,yCAA2B,EAChDhB,QAAQa,IAAI,EACZJ,aACAV,QAAQkB,UAAU;IAEpB,MAAMJ,OACJJ,gBAAgB,MACZP,QAAQgB,GAAG,KACXC,IAAAA,cAAQ,EAACnB,QAAQkB,GAAG,EAAEE,IAAAA,yBAAiB,EAACpB,QAAQa,IAAI,EAAEJ;IAE5D,MAAM,EAAEY,YAAY,EAAEC,YAAY,EAAE,GAAG,MAAMxB,kBAAkBC;QAIrDuB;IAFV,MAAMrB,WAAW,MAAMM,mBACrB;QACEgB,MAAMD,CAAAA,qBAAAA,gCAAAA,aAAcC,IAAI,YAAlBD,qBAAsB;QAC5BE,SAAS;IACX,GACAT;QAIAK;IADF,MAAMK,SACJL,CAAAA,qBAAAA,IAAAA,yBAAiB,EAACM,IAAAA,sBAAc,EAACjB,cAAcV,QAAQ4B,UAAU,aAAjEP,qBACAnB,6BAAAA,mBAAAA,SAAU2B,MAAM,sBAAhB3B,yBAAAA,iBAAkBK,KAAK,qBAAvBL,uBAAyBwB,MAAM;QAMvBxB;IAJV,MAAM4B,cAAcxB,YAClB;QACE,sEAAsE;QACtE,gEAAgE;QAChEQ,MAAMZ,CAAAA,wBAAAA,SAAS2B,MAAM,CAACf,IAAI,YAApBZ,wBAAwBY;QAC9BI,YAAYF;IACd,GACA;QACET,OAAO;YACLmB;WACGJ;OAEFC;IAIP,IAAI,CAACvB,QAAQ+B,aAAa,EAAE;QAC1B,MAAMC,IAAAA,4BAAa,EAAC;YAClBC,eAAehC,QAAQa,IAAI;YAC3BJ,aAAaA;YACbwB,UAAUC,IAAAA,oCAAsB,EAACzB;QACnC;IACF;IAEA,MAAM0B,kBAAkB,MAAM7B,MAAMuB;IAEpC,MAAMO,qBAAqBC,IAAAA,aAAO,EAAC5B,aAAa;IAChD,MAAM6B,kBAAkBD,IAAAA,aAAO,EAACrC,QAAQa,IAAI,EAAE;IAE9C,2DAA2D;IAC3D,4EAA4E;IAC5E,MAAM0B,gCAAgCd,OAAOe,UAAU,CAAC,OAAO;IAC/D,MAAMC,kBAAkBJ,IAAAA,aAAO,EAC7BE,+BACA;IAGF,kDAAkD;IAClD,IAAIxC,QAAQ2C,mBAAmB,EAAE;QAC/B,IAAI1C,QAAQ2C,YAAY,CAACC,KAAK,CAAC5C,QAAQY,WAAW,CAAC,CAACiC,IAAI,KAAK,OAAO;YAClEC,cAAM,CAACC,IAAI,CACTC,IAAAA,oBAAY,CAAA,CAAC,YAAY,EAAEhD,QAAQY,WAAW,CAAC;wKACiH,CAAC;QAErK;QAEA,MAAMqC,mBAAmBC,IAAAA,qBAAiB,EACxClD,QAAQY,WAAW,EACnBZ,QAAQ2C,YAAY,EACpB;YACEQ,QAAQnD,QAAQoD,UAAU;YAC1BvC,MAAMb,QAAQa,IAAI;YAClBwC,cAAc,CAACtD,QAAQuD,mCAAmC;QAC5D;QAGFL,iBAAiBJ,IAAI,GAAG;QAExBU,IAAAA,qBAAa,EACX,CAAC,EAAEhB,8BAA8B,aAAa,CAAC,EAC/CU;QAEF,MAAMO,iBAAiBC,IAAAA,4BAAoB,EAACzD,QAAQa,IAAI;QAExD,MAAM6C,WAAWC,IAAAA,kBAAc,EAC7BV,kBACAjD,QAAQ2C,YAAY,EACpBa;QAEFI,IAAAA,iBAAa,EACX,CAAC,EAAErB,8BAA8B,CAAC,EAAEsB,IAAAA,mBAAe,EAACL,gBAAgB,CAAC,EACrEE,UACA;YACEI,UAAU;QACZ;IAEJ,OAEK,IACH,CAACC,IAAAA,cAAU,EAACtB,oBACZsB,IAAAA,cAAU,EAAC3B,uBACXE,oBAAoBF,oBACpB;QACA,MAAM4B,IAAAA,cAAU,EACd;YACErC,YAAYY;YACZ0B,QAAQ;gBACN;oBACEC,OAAOzD;oBACP0D,QAAQ;oBACRC,MAAM;gBACR;aACD;QACH,GACApE;IAEJ;IAEA,IAAI,QAAQmC,iBAAiB;QAC3B,MAAMkC,WAAWC,IAAAA,kCAAmB,EAAuB,CAAC,EAAEC,IAAI,EAAE;YAClE,IAAIC,UAAU;YACdrC,gBAAgBsC,EAAE,CAAC,SAAS,CAACC;gBAC3B,IAAIA,MAAMC,IAAI,KAAK,SAAS;oBAC1BH,UAAU;gBACZ,OAAO,IAAIE,MAAMC,IAAI,KAAK,SAAS;oBACjCH,UAAU;gBACZ,OAAO,IAAIE,MAAMC,IAAI,KAAK,OAAO;oBAC/BJ,KAAK;wBAAEC;oBAAQ;gBACjB;gBACA,sCAAsC;gBACtC,iDAAiD;gBACjD,IAAI,YAAYE,OAAO;oBACrBA,MAAME,MAAM,CAACC,KAAK;gBACpB;YACF;QACF;QACA,OAAOR;IACT,OAAO;YACyClC,mBAC7BgC;QADjB,MAAMA,SAAShC,CAAAA,mCAAAA,eAAiB,CAAC,SAAS,MAAIA,oCAAAA,oBAAAA,eAAiB,CAAC,EAAE,qBAApBA,kBAAsBgC,MAAM;QAC1E,MAAMW,WAAWX,CAAAA,2BAAAA,WAAAA,MAAQ,CAAC,EAAE,qBAAXA,SAAaW,QAAQ,KAAI;QAC1C,MAAMC,UAAU1C,IAAAA,aAAO,EAACE,+BAA+BuC;QACvD,MAAM;YAAEN,SAAS;YAAMO;QAAQ;IACjC;AACF;AAEO,eAAejF,kBACpBC,OAAiC;IAMjC,yCAAyC;IACzC,MAAMiF,SAAS,MAAM,2BAAA,QAAO;IAC5B,MAAMC,YAAY,CAAC;IACnB,KAAK,MAAMC,OAAOC,OAAOC,IAAI,CAACrF,SAAU;QACtC,IAAI,CAACiF,OAAOK,UAAU,CAACH,IAAI,EAAE;YAC3BD,SAAS,CAACC,IAAI,GAAGnF,OAAO,CAACmF,IAAI;QAC/B;IACF;IAEA,MAAM7D,eAAe,CAAC;IACtB,MAAMiE,kBAAkB;QACtB;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IACD,MAAMhE,eAAe,CAAC;IACtB,KAAK,MAAM4D,OAAOC,OAAOC,IAAI,CAACH,WAAY;QACxC,IAAIK,gBAAgBC,QAAQ,CAACL,MAAM;YACjC7D,YAAY,CAAC6D,IAAI,GAAGD,SAAS,CAACC,IAAI;QACpC,OAAO;YACL5D,YAAY,CAAC4D,IAAI,GAAGD,SAAS,CAACC,IAAI;QACpC;IACF;IAEA,OAAO;QACL7D;QACAC;IACF;AACF;MAEA,WAAezB"}
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 { createAsyncIterable } from '@nx/devkit/src/utils/async-iterable';\nimport {\n createBuildableTsConfig,\n loadViteDynamicImport,\n validateTypes,\n} from '../../utils/executor-utils';\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, loadConfigFromFile } =\n await loadViteDynamicImport();\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n createBuildableTsConfig(projectRoot, options, context);\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n options.configFile\n );\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n const { buildOptions, otherOptions } = await getBuildExtraArgs(options);\n\n const resolved = await loadConfigFromFile(\n {\n mode: otherOptions?.mode ?? 'production',\n command: 'build',\n },\n viteConfigPath\n );\n\n const outDir =\n joinPathFragments(offsetFromRoot(projectRoot), options.outputPath) ??\n resolved?.config?.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.config.root ?? root,\n configFile: viteConfigPath,\n },\n {\n build: {\n outDir,\n ...buildOptions,\n },\n ...otherOptions,\n }\n );\n\n if (!options.skipTypeCheck) {\n await validateTypes({\n workspaceRoot: context.root,\n projectRoot: projectRoot,\n tsconfig: getProjectTsConfigPath(projectRoot),\n });\n }\n\n const watcherOrOutput = await build(buildConfig);\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/packages/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 }\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 !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 if ('on' in watcherOrOutput) {\n const iterable = createAsyncIterable<{ success: boolean }>(({ next }) => {\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) {\n event.result.close();\n }\n });\n });\n yield* iterable;\n } else {\n const output = watcherOrOutput?.['output'] || watcherOrOutput?.[0]?.output;\n const fileName = output?.[0]?.fileName || 'main.cjs';\n const outfile = resolve(outDirRelativeToWorkspaceRoot, fileName);\n yield { success: true, outfile };\n }\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":["viteBuildExecutor","getBuildExtraArgs","options","context","resolved","process","env","VITE_CJS_IGNORE_WARNING","mergeConfig","build","loadConfigFromFile","loadViteDynamicImport","projectRoot","projectsConfigurations","projects","projectName","root","createBuildableTsConfig","viteConfigPath","normalizeViteConfigFilePath","configFile","cwd","relative","joinPathFragments","buildOptions","otherOptions","mode","command","outDir","offsetFromRoot","outputPath","config","buildConfig","skipTypeCheck","validateTypes","workspaceRoot","tsconfig","getProjectTsConfigPath","watcherOrOutput","libraryPackageJson","resolve","rootPackageJson","outDirRelativeToWorkspaceRoot","replaceAll","distPackageJson","generatePackageJson","projectGraph","nodes","type","logger","warn","stripIndents","builtPackageJson","createPackageJson","target","targetName","isProduction","includeDevDependenciesInPackageJson","writeJsonFile","packageManager","detectPackageManager","lockFile","createLockFile","writeFileSync","getLockFileName","encoding","existsSync","copyAssets","assets","input","output","glob","iterable","createAsyncIterable","next","success","on","event","code","result","close","fileName","outfile","schema","extraArgs","key","Object","keys","properties","buildSchemaKeys","includes","watch","undefined"],"mappings":"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"}
@@ -1,11 +1,9 @@
1
- import type { FileReplacement } from '../../plugins/rollup-replace-files.plugin';
2
1
  export interface ViteBuildExecutorOptions {
3
2
  outputPath?: string;
3
+ buildLibsFromSource?: boolean;
4
4
  skipTypeCheck?: boolean;
5
5
  configFile?: string;
6
- fileReplacements?: FileReplacement[];
7
6
  watch?: boolean;
8
7
  generatePackageJson?: boolean;
9
8
  includeDevDependenciesInPackageJson?: boolean;
10
- buildLibsFromSource?: boolean;
11
9
  }
@@ -34,28 +34,6 @@
34
34
  "x-completion-type": "file",
35
35
  "x-completion-glob": "vite.config.@(js|ts)"
36
36
  },
37
- "fileReplacements": {
38
- "description": "Replace files with other files in the build.",
39
- "type": "array",
40
- "items": {
41
- "type": "object",
42
- "properties": {
43
- "replace": {
44
- "type": "string",
45
- "description": "The file to be replaced.",
46
- "x-completion-type": "file"
47
- },
48
- "with": {
49
- "type": "string",
50
- "description": "The file to replace with.",
51
- "x-completion-type": "file"
52
- }
53
- },
54
- "additionalProperties": false,
55
- "required": ["replace", "with"]
56
- },
57
- "default": []
58
- },
59
37
  "watch": {
60
38
  "description": "Enable re-building when files change.",
61
39
  "oneOf": [
@@ -22,7 +22,7 @@ const _buildimpl = require("../build/build.impl");
22
22
  async function* viteDevServerExecutor(options, context) {
23
23
  process.env.VITE_CJS_IGNORE_WARNING = 'true';
24
24
  // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.
25
- const { mergeConfig, createServer, loadConfigFromFile } = await Function('return import("vite")')();
25
+ const { mergeConfig, createServer, loadConfigFromFile } = await (0, _executorutils.loadViteDynamicImport)();
26
26
  const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
27
27
  const root = projectRoot === '.' ? process.cwd() : (0, _path.relative)(context.cwd, (0, _devkit.joinPathFragments)(context.root, projectRoot));
28
28
  (0, _executorutils.createBuildableTsConfig)(projectRoot, options, context);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/executors/dev-server/dev-server.impl.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n parseTargetString,\n} from '@nx/devkit';\nimport {\n getNxTargetOptions,\n getViteServerOptions,\n normalizeViteConfigFilePath,\n} from '../../utils/options-utils';\nimport { ViteDevServerExecutorOptions } from './schema';\nimport { ViteBuildExecutorOptions } from '../build/schema';\nimport { createBuildableTsConfig } from '../../utils/executor-utils';\nimport { relative } from 'path';\nimport { getBuildExtraArgs } from '../build/build.impl';\n\nexport async function* viteDevServerExecutor(\n options: ViteDevServerExecutorOptions,\n context: ExecutorContext\n): AsyncGenerator<{ success: boolean; baseUrl: string }> {\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, createServer, loadConfigFromFile } = await (Function(\n 'return import(\"vite\")'\n )() as Promise<typeof import('vite')>);\n\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n createBuildableTsConfig(projectRoot, options, context);\n\n // Retrieve the option for the configured buildTarget.\n const buildTargetOptions: ViteBuildExecutorOptions = getNxTargetOptions(\n options.buildTarget,\n context\n );\n\n const { configuration } = parseTargetString(options.buildTarget, context);\n\n const { buildOptions, otherOptions: otherOptionsFromBuild } =\n await getBuildExtraArgs(buildTargetOptions);\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n buildTargetOptions.configFile\n );\n const { serverOptions, otherOptions } = await getServerExtraArgs(\n options,\n configuration,\n buildOptions,\n otherOptionsFromBuild\n );\n const resolved = await loadConfigFromFile(\n {\n mode: otherOptions?.mode ?? buildTargetOptions?.['mode'] ?? 'development',\n command: 'serve',\n },\n viteConfigPath\n );\n\n // vite InlineConfig\n const serverConfig = 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.config.root ?? root,\n configFile: viteConfigPath,\n },\n {\n server: {\n ...(await getViteServerOptions(options, context)),\n ...serverOptions,\n },\n ...otherOptions,\n }\n );\n\n try {\n const server = await createServer(serverConfig);\n await runViteDevServer(server);\n const resolvedUrls = [\n ...server.resolvedUrls.local,\n ...server.resolvedUrls.network,\n ];\n\n yield {\n success: true,\n baseUrl: resolvedUrls[0] ?? '',\n };\n } catch (e) {\n console.error(e);\n yield {\n success: false,\n baseUrl: '',\n };\n }\n\n await new Promise<void>((resolve) => {\n process.once('SIGINT', () => resolve());\n process.once('SIGTERM', () => resolve());\n process.once('exit', () => resolve());\n });\n}\n// vite ViteDevServer\nasync function runViteDevServer(server: Record<string, any>): Promise<void> {\n await server.listen();\n\n server.printUrls();\n\n const processOnExit = async () => {\n await server.close();\n };\n\n process.once('SIGINT', processOnExit);\n process.once('SIGTERM', processOnExit);\n process.once('exit', processOnExit);\n}\n\nexport default viteDevServerExecutor;\n\nasync function getServerExtraArgs(\n options: ViteDevServerExecutorOptions,\n configuration: string | undefined,\n buildOptionsFromBuildTarget: Record<string, unknown> | undefined,\n otherOptionsFromBuildTarget: Record<string, unknown> | undefined\n): Promise<{\n // vite ServerOptions\n serverOptions: 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 let serverOptions: Record<string, unknown> = {};\n const serverSchemaKeys = [\n 'hmr',\n 'warmup',\n 'watch',\n 'middlewareMode',\n 'fs',\n 'origin',\n 'preTransformRequests',\n 'sourcemapIgnoreList',\n 'port',\n 'strictPort',\n 'host',\n 'https',\n 'open',\n 'proxy',\n 'cors',\n 'headers',\n ];\n\n let otherOptions = {};\n for (const key of Object.keys(extraArgs)) {\n if (serverSchemaKeys.includes(key)) {\n serverOptions[key] = extraArgs[key];\n } else {\n otherOptions[key] = extraArgs[key];\n }\n }\n\n if (configuration) {\n serverOptions = {\n ...serverOptions,\n watch: buildOptionsFromBuildTarget?.watch ?? serverOptions?.watch,\n };\n otherOptions = {\n ...otherOptions,\n ...(otherOptionsFromBuildTarget ?? {}),\n };\n }\n\n return {\n serverOptions,\n otherOptions,\n };\n}\n"],"names":["viteDevServerExecutor","options","context","process","env","VITE_CJS_IGNORE_WARNING","mergeConfig","createServer","loadConfigFromFile","Function","projectRoot","projectsConfigurations","projects","projectName","root","cwd","relative","joinPathFragments","createBuildableTsConfig","buildTargetOptions","getNxTargetOptions","buildTarget","configuration","parseTargetString","buildOptions","otherOptions","otherOptionsFromBuild","getBuildExtraArgs","viteConfigPath","normalizeViteConfigFilePath","configFile","serverOptions","getServerExtraArgs","resolved","mode","command","serverConfig","config","server","getViteServerOptions","runViteDevServer","resolvedUrls","local","network","success","baseUrl","e","console","error","Promise","resolve","once","listen","printUrls","processOnExit","close","buildOptionsFromBuildTarget","otherOptionsFromBuildTarget","schema","extraArgs","key","Object","keys","properties","serverSchemaKeys","includes","watch"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/executors/dev-server/dev-server.impl.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n parseTargetString,\n} from '@nx/devkit';\nimport {\n getNxTargetOptions,\n getViteServerOptions,\n normalizeViteConfigFilePath,\n} from '../../utils/options-utils';\nimport { ViteDevServerExecutorOptions } from './schema';\nimport { ViteBuildExecutorOptions } from '../build/schema';\nimport {\n createBuildableTsConfig,\n loadViteDynamicImport,\n} from '../../utils/executor-utils';\nimport { relative } from 'path';\nimport { getBuildExtraArgs } from '../build/build.impl';\n\nexport async function* viteDevServerExecutor(\n options: ViteDevServerExecutorOptions,\n context: ExecutorContext\n): AsyncGenerator<{ success: boolean; baseUrl: string }> {\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, createServer, loadConfigFromFile } =\n await loadViteDynamicImport();\n\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n createBuildableTsConfig(projectRoot, options, context);\n\n // Retrieve the option for the configured buildTarget.\n const buildTargetOptions: ViteBuildExecutorOptions = getNxTargetOptions(\n options.buildTarget,\n context\n );\n\n const { configuration } = parseTargetString(options.buildTarget, context);\n\n const { buildOptions, otherOptions: otherOptionsFromBuild } =\n await getBuildExtraArgs(buildTargetOptions);\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n buildTargetOptions.configFile\n );\n const { serverOptions, otherOptions } = await getServerExtraArgs(\n options,\n configuration,\n buildOptions,\n otherOptionsFromBuild\n );\n const resolved = await loadConfigFromFile(\n {\n mode: otherOptions?.mode ?? buildTargetOptions?.['mode'] ?? 'development',\n command: 'serve',\n },\n viteConfigPath\n );\n\n // vite InlineConfig\n const serverConfig = 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.config.root ?? root,\n configFile: viteConfigPath,\n },\n {\n server: {\n ...(await getViteServerOptions(options, context)),\n ...serverOptions,\n },\n ...otherOptions,\n }\n );\n\n try {\n const server = await createServer(serverConfig);\n await runViteDevServer(server);\n const resolvedUrls = [\n ...server.resolvedUrls.local,\n ...server.resolvedUrls.network,\n ];\n\n yield {\n success: true,\n baseUrl: resolvedUrls[0] ?? '',\n };\n } catch (e) {\n console.error(e);\n yield {\n success: false,\n baseUrl: '',\n };\n }\n\n await new Promise<void>((resolve) => {\n process.once('SIGINT', () => resolve());\n process.once('SIGTERM', () => resolve());\n process.once('exit', () => resolve());\n });\n}\n// vite ViteDevServer\nasync function runViteDevServer(server: Record<string, any>): Promise<void> {\n await server.listen();\n\n server.printUrls();\n\n const processOnExit = async () => {\n await server.close();\n };\n\n process.once('SIGINT', processOnExit);\n process.once('SIGTERM', processOnExit);\n process.once('exit', processOnExit);\n}\n\nexport default viteDevServerExecutor;\n\nasync function getServerExtraArgs(\n options: ViteDevServerExecutorOptions,\n configuration: string | undefined,\n buildOptionsFromBuildTarget: Record<string, unknown> | undefined,\n otherOptionsFromBuildTarget: Record<string, unknown> | undefined\n): Promise<{\n // vite ServerOptions\n serverOptions: 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 let serverOptions: Record<string, unknown> = {};\n const serverSchemaKeys = [\n 'hmr',\n 'warmup',\n 'watch',\n 'middlewareMode',\n 'fs',\n 'origin',\n 'preTransformRequests',\n 'sourcemapIgnoreList',\n 'port',\n 'strictPort',\n 'host',\n 'https',\n 'open',\n 'proxy',\n 'cors',\n 'headers',\n ];\n\n let otherOptions = {};\n for (const key of Object.keys(extraArgs)) {\n if (serverSchemaKeys.includes(key)) {\n serverOptions[key] = extraArgs[key];\n } else {\n otherOptions[key] = extraArgs[key];\n }\n }\n\n if (configuration) {\n serverOptions = {\n ...serverOptions,\n watch: buildOptionsFromBuildTarget?.watch ?? serverOptions?.watch,\n };\n otherOptions = {\n ...otherOptions,\n ...(otherOptionsFromBuildTarget ?? {}),\n };\n }\n\n return {\n serverOptions,\n otherOptions,\n };\n}\n"],"names":["viteDevServerExecutor","options","context","process","env","VITE_CJS_IGNORE_WARNING","mergeConfig","createServer","loadConfigFromFile","loadViteDynamicImport","projectRoot","projectsConfigurations","projects","projectName","root","cwd","relative","joinPathFragments","createBuildableTsConfig","buildTargetOptions","getNxTargetOptions","buildTarget","configuration","parseTargetString","buildOptions","otherOptions","otherOptionsFromBuild","getBuildExtraArgs","viteConfigPath","normalizeViteConfigFilePath","configFile","serverOptions","getServerExtraArgs","resolved","mode","command","serverConfig","config","server","getViteServerOptions","runViteDevServer","resolvedUrls","local","network","success","baseUrl","e","console","error","Promise","resolve","once","listen","printUrls","processOnExit","close","buildOptionsFromBuildTarget","otherOptionsFromBuildTarget","schema","extraArgs","key","Object","keys","properties","serverSchemaKeys","includes","watch"],"mappings":"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"}
@@ -18,11 +18,12 @@ const _devkit = require("@nx/devkit");
18
18
  const _optionsutils = require("../../utils/options-utils");
19
19
  const _path = require("path");
20
20
  const _buildimpl = require("../build/build.impl");
21
+ const _executorutils = require("../../utils/executor-utils");
21
22
  async function* vitePreviewServerExecutor(options, context) {
22
23
  var _context_projectsConfigurations_projects_target_project, _resolved_config_build, _resolved_config;
23
24
  process.env.VITE_CJS_IGNORE_WARNING = 'true';
24
25
  // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.
25
- const { mergeConfig, preview, loadConfigFromFile } = await Function('return import("vite")')();
26
+ const { mergeConfig, preview, loadConfigFromFile } = await (0, _executorutils.loadViteDynamicImport)();
26
27
  const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
27
28
  const target = (0, _devkit.parseTargetString)(options.buildTarget, context);
28
29
  const targetConfiguration = (_context_projectsConfigurations_projects_target_project = context.projectsConfigurations.projects[target.project]) == null ? void 0 : _context_projectsConfigurations_projects_target_project.targets[target.target];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/executors/preview-server/preview-server.impl.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n offsetFromRoot,\n parseTargetString,\n runExecutor,\n} from '@nx/devkit';\nimport {\n getNxTargetOptions,\n getProxyConfig,\n normalizeViteConfigFilePath,\n} from '../../utils/options-utils';\nimport { ViteBuildExecutorOptions } from '../build/schema';\nimport { VitePreviewServerExecutorOptions } from './schema';\nimport { relative } from 'path';\nimport { getBuildExtraArgs } from '../build/build.impl';\n\nexport async function* vitePreviewServerExecutor(\n options: VitePreviewServerExecutorOptions,\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, preview, loadConfigFromFile } = await (Function(\n 'return import(\"vite\")'\n )() as Promise<typeof import('vite')>);\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const target = parseTargetString(options.buildTarget, context);\n const targetConfiguration =\n context.projectsConfigurations.projects[target.project]?.targets[\n target.target\n ];\n if (!targetConfiguration) {\n throw new Error(`Invalid buildTarget: ${options.buildTarget}`);\n }\n\n const isCustomBuildTarget =\n targetConfiguration.executor !== '@nx/vite:build' &&\n targetConfiguration.executor !== '@nrwl/vite:build';\n\n // Retrieve the option for the configured buildTarget.\n const buildTargetOptions: ViteBuildExecutorOptions = getNxTargetOptions(\n options.buildTarget,\n context\n );\n\n const { configuration } = parseTargetString(options.buildTarget, context);\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n buildTargetOptions.configFile\n );\n\n const { buildOptions, otherOptions: otherOptionsFromBuild } =\n await getBuildExtraArgs(buildTargetOptions);\n\n const { previewOptions, otherOptions } = await getExtraArgs(\n options,\n configuration,\n otherOptionsFromBuild\n );\n const resolved = await loadConfigFromFile(\n {\n mode: otherOptions?.mode ?? otherOptionsFromBuild?.mode ?? 'production',\n command: 'build',\n },\n viteConfigPath\n );\n\n const outDir =\n options.staticFilePath ??\n joinPathFragments(\n offsetFromRoot(projectRoot),\n buildTargetOptions.outputPath\n ) ??\n resolved?.config?.build?.outDir;\n\n if (!outDir) {\n throw new Error(\n `Could not infer the \"outputPath\" or \"outDir\". It should be set in your vite.config.ts, or as a property of the \"${options.buildTarget}\" buildTarget or provided explicitly as a \"staticFilePath\" option.`\n );\n }\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n // Merge the options from the build and preview-serve targets.\n // The latter takes precedence.\n const mergedOptions = {\n ...{ watch: {} },\n build: {\n outDir,\n ...(isCustomBuildTarget ? {} : buildOptions),\n },\n ...(isCustomBuildTarget ? {} : otherOptionsFromBuild),\n ...otherOptions,\n preview: {\n ...getProxyConfig(context, otherOptions.proxyConfig),\n ...previewOptions,\n },\n };\n\n // vite InlineConfig\n const serverConfig = 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.config.root ?? root,\n configFile: viteConfigPath,\n },\n {\n ...mergedOptions,\n }\n );\n\n if (serverConfig.mode === 'production') {\n console.warn('WARNING: preview is not meant to be run in production!');\n }\n\n // vite PreviewServer\n let server: Record<string, any> | undefined;\n\n const processOnExit = async () => {\n await closeServer(server);\n };\n\n process.once('SIGINT', processOnExit);\n process.once('SIGTERM', processOnExit);\n process.once('exit', processOnExit);\n\n // Launch the build target.\n // If customBuildTarget is set to true, do not provide any overrides to it\n const buildTargetOverrides = isCustomBuildTarget ? {} : mergedOptions;\n const build = await runExecutor(target, buildTargetOverrides, context);\n\n for await (const result of build) {\n if (result.success) {\n try {\n if (!server) {\n server = await preview(serverConfig);\n }\n server.printUrls();\n\n const resolvedUrls = [\n ...server.resolvedUrls.local,\n ...server.resolvedUrls.network,\n ];\n\n yield {\n success: true,\n baseUrl: resolvedUrls[0] ?? '',\n };\n } catch (e) {\n console.error(e);\n yield {\n success: false,\n baseUrl: '',\n };\n }\n } else {\n yield {\n success: false,\n baseUrl: '',\n };\n }\n }\n\n await new Promise<void>((resolve) => {\n process.once('SIGINT', () => resolve());\n process.once('SIGTERM', () => resolve());\n process.once('exit', () => resolve());\n });\n}\n\nfunction closeServer(server?: Record<string, any>): Promise<void> {\n return new Promise((resolve) => {\n if (!server) {\n resolve();\n } else {\n const { httpServer } = server;\n if (httpServer['closeAllConnections']) {\n // https://github.com/vitejs/vite/pull/14834\n // closeAllConnections was added in Node v18.2.0\n // typically is \"as http.Server\" but no reason\n // to import http just for this\n (httpServer as any).closeAllConnections();\n }\n httpServer.close(() => resolve());\n }\n });\n}\n\nexport default vitePreviewServerExecutor;\n\nasync function getExtraArgs(\n options: VitePreviewServerExecutorOptions,\n configuration: string | undefined,\n otherOptionsFromBuildTarget: Record<string, unknown> | undefined\n): Promise<{\n // vite PreviewOptions\n previewOptions: Record<string, any>;\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 previewOptions = {};\n const previewSchemaKeys = [\n 'port',\n 'strictPort',\n 'host',\n 'https',\n 'open',\n 'proxy',\n 'cors',\n 'headers',\n ];\n\n let otherOptions = {};\n for (const key of Object.keys(extraArgs)) {\n if (previewSchemaKeys.includes(key)) {\n previewOptions[key] = extraArgs[key];\n } else {\n otherOptions[key] = extraArgs[key];\n }\n }\n\n if (configuration) {\n otherOptions = {\n ...otherOptions,\n ...(otherOptionsFromBuildTarget ?? {}),\n };\n }\n\n return {\n previewOptions,\n otherOptions,\n };\n}\n"],"names":["vitePreviewServerExecutor","options","context","resolved","process","env","VITE_CJS_IGNORE_WARNING","mergeConfig","preview","loadConfigFromFile","Function","projectRoot","projectsConfigurations","projects","projectName","root","target","parseTargetString","buildTarget","targetConfiguration","project","targets","Error","isCustomBuildTarget","executor","buildTargetOptions","getNxTargetOptions","configuration","viteConfigPath","normalizeViteConfigFilePath","configFile","buildOptions","otherOptions","otherOptionsFromBuild","getBuildExtraArgs","previewOptions","getExtraArgs","mode","command","outDir","staticFilePath","joinPathFragments","offsetFromRoot","outputPath","config","build","cwd","relative","mergedOptions","watch","getProxyConfig","proxyConfig","serverConfig","console","warn","server","processOnExit","closeServer","once","buildTargetOverrides","runExecutor","result","success","printUrls","resolvedUrls","local","network","baseUrl","e","error","Promise","resolve","httpServer","closeAllConnections","close","otherOptionsFromBuildTarget","schema","extraArgs","key","Object","keys","properties","previewSchemaKeys","includes"],"mappings":";;;;;;;;IAiBuBA,yBAAyB;eAAzBA;;IAkLvB,OAAyC;eAAzC;;;;wBA7LO;8BAKA;sBAGkB;2BACS;AAE3B,gBAAgBA,0BACrBC,OAAyC,EACzCC,OAAwB;QAWtBA,yDA+CAC,wBAAAA;IAxDFC,QAAQC,GAAG,CAACC,uBAAuB,GAAG;IACtC,yFAAyF;IACzF,MAAM,EAAEC,WAAW,EAAEC,OAAO,EAAEC,kBAAkB,EAAE,GAAG,MAAOC,SAC1D;IAEF,MAAMC,cACJT,QAAQU,sBAAsB,CAACC,QAAQ,CAACX,QAAQY,WAAW,CAAC,CAACC,IAAI;IACnE,MAAMC,SAASC,IAAAA,yBAAiB,EAAChB,QAAQiB,WAAW,EAAEhB;IACtD,MAAMiB,uBACJjB,0DAAAA,QAAQU,sBAAsB,CAACC,QAAQ,CAACG,OAAOI,OAAO,CAAC,qBAAvDlB,wDAAyDmB,OAAO,CAC9DL,OAAOA,MAAM,CACd;IACH,IAAI,CAACG,qBAAqB;QACxB,MAAM,IAAIG,MAAM,CAAC,qBAAqB,EAAErB,QAAQiB,WAAW,CAAC,CAAC;IAC/D;IAEA,MAAMK,sBACJJ,oBAAoBK,QAAQ,KAAK,oBACjCL,oBAAoBK,QAAQ,KAAK;IAEnC,sDAAsD;IACtD,MAAMC,qBAA+CC,IAAAA,gCAAkB,EACrEzB,QAAQiB,WAAW,EACnBhB;IAGF,MAAM,EAAEyB,aAAa,EAAE,GAAGV,IAAAA,yBAAiB,EAAChB,QAAQiB,WAAW,EAAEhB;IAEjE,MAAM0B,iBAAiBC,IAAAA,yCAA2B,EAChD3B,QAAQa,IAAI,EACZJ,aACAc,mBAAmBK,UAAU;IAG/B,MAAM,EAAEC,YAAY,EAAEC,cAAcC,qBAAqB,EAAE,GACzD,MAAMC,IAAAA,4BAAiB,EAACT;IAE1B,MAAM,EAAEU,cAAc,EAAEH,YAAY,EAAE,GAAG,MAAMI,aAC7CnC,SACA0B,eACAM;QAIQD,oBAAAA;IAFV,MAAM7B,WAAW,MAAMM,mBACrB;QACE4B,MAAML,CAAAA,OAAAA,CAAAA,qBAAAA,gCAAAA,aAAcK,IAAI,YAAlBL,qBAAsBC,yCAAAA,sBAAuBI,IAAI,YAAjDL,OAAqD;QAC3DM,SAAS;IACX,GACAV;QAIA3B,yBAAAA;IADF,MAAMsC,SACJtC,CAAAA,QAAAA,CAAAA,0BAAAA,QAAQuC,cAAc,YAAtBvC,0BACAwC,IAAAA,yBAAiB,EACfC,IAAAA,sBAAc,EAAC/B,cACfc,mBAAmBkB,UAAU,aAH/B1C,QAKAE,6BAAAA,mBAAAA,SAAUyC,MAAM,sBAAhBzC,yBAAAA,iBAAkB0C,KAAK,qBAAvB1C,uBAAyBoC,MAAM;IAEjC,IAAI,CAACA,QAAQ;QACX,MAAM,IAAIjB,MACR,CAAC,gHAAgH,EAAErB,QAAQiB,WAAW,CAAC,kEAAkE,CAAC;IAE9M;IACA,MAAMH,OACJJ,gBAAgB,MACZP,QAAQ0C,GAAG,KACXC,IAAAA,cAAQ,EAAC7C,QAAQ4C,GAAG,EAAEL,IAAAA,yBAAiB,EAACvC,QAAQa,IAAI,EAAEJ;IAE5D,8DAA8D;IAC9D,+BAA+B;IAC/B,MAAMqC,gBAAgB,eACjB;QAAEC,OAAO,CAAC;IAAE;QACfJ,OAAO;YACLN;WACIhB,sBAAsB,CAAC,IAAIQ;OAE7BR,sBAAsB,CAAC,IAAIU,uBAC5BD;QACHxB,SAAS,eACJ0C,IAAAA,4BAAc,EAAChD,SAAS8B,aAAamB,WAAW,GAChDhB;;QASGhC;IALV,oBAAoB;IACpB,MAAMiD,eAAe7C,YACnB;QACE,sEAAsE;QACtE,gEAAgE;QAChEQ,MAAMZ,CAAAA,wBAAAA,SAASyC,MAAM,CAAC7B,IAAI,YAApBZ,wBAAwBY;QAC9Be,YAAYF;IACd,GACA,eACKoB;IAIP,IAAII,aAAaf,IAAI,KAAK,cAAc;QACtCgB,QAAQC,IAAI,CAAC;IACf;IAEA,qBAAqB;IACrB,IAAIC;IAEJ,MAAMC,gBAAgB;QACpB,MAAMC,YAAYF;IACpB;IAEAnD,QAAQsD,IAAI,CAAC,UAAUF;IACvBpD,QAAQsD,IAAI,CAAC,WAAWF;IACxBpD,QAAQsD,IAAI,CAAC,QAAQF;IAErB,2BAA2B;IAC3B,0EAA0E;IAC1E,MAAMG,uBAAuBpC,sBAAsB,CAAC,IAAIyB;IACxD,MAAMH,QAAQ,MAAMe,IAAAA,mBAAW,EAAC5C,QAAQ2C,sBAAsBzD;IAE9D,WAAW,MAAM2D,UAAUhB,MAAO;QAChC,IAAIgB,OAAOC,OAAO,EAAE;YAClB,IAAI;gBACF,IAAI,CAACP,QAAQ;oBACXA,SAAS,MAAM/C,QAAQ4C;gBACzB;gBACAG,OAAOQ,SAAS;gBAEhB,MAAMC,eAAe;uBAChBT,OAAOS,YAAY,CAACC,KAAK;uBACzBV,OAAOS,YAAY,CAACE,OAAO;iBAC/B;oBAIUF;gBAFX,MAAM;oBACJF,SAAS;oBACTK,SAASH,CAAAA,iBAAAA,YAAY,CAAC,EAAE,YAAfA,iBAAmB;gBAC9B;YACF,EAAE,OAAOI,GAAG;gBACVf,QAAQgB,KAAK,CAACD;gBACd,MAAM;oBACJN,SAAS;oBACTK,SAAS;gBACX;YACF;QACF,OAAO;YACL,MAAM;gBACJL,SAAS;gBACTK,SAAS;YACX;QACF;IACF;IAEA,MAAM,IAAIG,QAAc,CAACC;QACvBnE,QAAQsD,IAAI,CAAC,UAAU,IAAMa;QAC7BnE,QAAQsD,IAAI,CAAC,WAAW,IAAMa;QAC9BnE,QAAQsD,IAAI,CAAC,QAAQ,IAAMa;IAC7B;AACF;AAEA,SAASd,YAAYF,MAA4B;IAC/C,OAAO,IAAIe,QAAQ,CAACC;QAClB,IAAI,CAAChB,QAAQ;YACXgB;QACF,OAAO;YACL,MAAM,EAAEC,UAAU,EAAE,GAAGjB;YACvB,IAAIiB,UAAU,CAAC,sBAAsB,EAAE;gBACrC,4CAA4C;gBAC5C,gDAAgD;gBAChD,8CAA8C;gBAC9C,+BAA+B;gBAC9BA,WAAmBC,mBAAmB;YACzC;YACAD,WAAWE,KAAK,CAAC,IAAMH;QACzB;IACF;AACF;MAEA,WAAevE;AAEf,eAAeoC,aACbnC,OAAyC,EACzC0B,aAAiC,EACjCgD,2BAAgE;IAMhE,yCAAyC;IACzC,MAAMC,SAAS,MAAM,2BAAA,QAAO;IAC5B,MAAMC,YAAY,CAAC;IACnB,KAAK,MAAMC,OAAOC,OAAOC,IAAI,CAAC/E,SAAU;QACtC,IAAI,CAAC2E,OAAOK,UAAU,CAACH,IAAI,EAAE;YAC3BD,SAAS,CAACC,IAAI,GAAG7E,OAAO,CAAC6E,IAAI;QAC/B;IACF;IAEA,MAAM3C,iBAAiB,CAAC;IACxB,MAAM+C,oBAAoB;QACxB;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IAED,IAAIlD,eAAe,CAAC;IACpB,KAAK,MAAM8C,OAAOC,OAAOC,IAAI,CAACH,WAAY;QACxC,IAAIK,kBAAkBC,QAAQ,CAACL,MAAM;YACnC3C,cAAc,CAAC2C,IAAI,GAAGD,SAAS,CAACC,IAAI;QACtC,OAAO;YACL9C,YAAY,CAAC8C,IAAI,GAAGD,SAAS,CAACC,IAAI;QACpC;IACF;IAEA,IAAInD,eAAe;QACjBK,eAAe,eACVA,cACC2C,sCAAAA,8BAA+B,CAAC;IAExC;IAEA,OAAO;QACLxC;QACAH;IACF;AACF"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/executors/preview-server/preview-server.impl.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n offsetFromRoot,\n parseTargetString,\n runExecutor,\n} from '@nx/devkit';\nimport {\n getNxTargetOptions,\n getProxyConfig,\n normalizeViteConfigFilePath,\n} from '../../utils/options-utils';\nimport { ViteBuildExecutorOptions } from '../build/schema';\nimport { VitePreviewServerExecutorOptions } from './schema';\nimport { relative } from 'path';\nimport { getBuildExtraArgs } from '../build/build.impl';\nimport { loadViteDynamicImport } from '../../utils/executor-utils';\n\nexport async function* vitePreviewServerExecutor(\n options: VitePreviewServerExecutorOptions,\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, preview, loadConfigFromFile } =\n await loadViteDynamicImport();\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const target = parseTargetString(options.buildTarget, context);\n const targetConfiguration =\n context.projectsConfigurations.projects[target.project]?.targets[\n target.target\n ];\n if (!targetConfiguration) {\n throw new Error(`Invalid buildTarget: ${options.buildTarget}`);\n }\n\n const isCustomBuildTarget =\n targetConfiguration.executor !== '@nx/vite:build' &&\n targetConfiguration.executor !== '@nrwl/vite:build';\n\n // Retrieve the option for the configured buildTarget.\n const buildTargetOptions: ViteBuildExecutorOptions = getNxTargetOptions(\n options.buildTarget,\n context\n );\n\n const { configuration } = parseTargetString(options.buildTarget, context);\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n buildTargetOptions.configFile\n );\n\n const { buildOptions, otherOptions: otherOptionsFromBuild } =\n await getBuildExtraArgs(buildTargetOptions);\n\n const { previewOptions, otherOptions } = await getExtraArgs(\n options,\n configuration,\n otherOptionsFromBuild\n );\n const resolved = await loadConfigFromFile(\n {\n mode: otherOptions?.mode ?? otherOptionsFromBuild?.mode ?? 'production',\n command: 'build',\n },\n viteConfigPath\n );\n\n const outDir =\n options.staticFilePath ??\n joinPathFragments(\n offsetFromRoot(projectRoot),\n buildTargetOptions.outputPath\n ) ??\n resolved?.config?.build?.outDir;\n\n if (!outDir) {\n throw new Error(\n `Could not infer the \"outputPath\" or \"outDir\". It should be set in your vite.config.ts, or as a property of the \"${options.buildTarget}\" buildTarget or provided explicitly as a \"staticFilePath\" option.`\n );\n }\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n // Merge the options from the build and preview-serve targets.\n // The latter takes precedence.\n const mergedOptions = {\n ...{ watch: {} },\n build: {\n outDir,\n ...(isCustomBuildTarget ? {} : buildOptions),\n },\n ...(isCustomBuildTarget ? {} : otherOptionsFromBuild),\n ...otherOptions,\n preview: {\n ...getProxyConfig(context, otherOptions.proxyConfig),\n ...previewOptions,\n },\n };\n\n // vite InlineConfig\n const serverConfig = 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.config.root ?? root,\n configFile: viteConfigPath,\n },\n {\n ...mergedOptions,\n }\n );\n\n if (serverConfig.mode === 'production') {\n console.warn('WARNING: preview is not meant to be run in production!');\n }\n\n // vite PreviewServer\n let server: Record<string, any> | undefined;\n\n const processOnExit = async () => {\n await closeServer(server);\n };\n\n process.once('SIGINT', processOnExit);\n process.once('SIGTERM', processOnExit);\n process.once('exit', processOnExit);\n\n // Launch the build target.\n // If customBuildTarget is set to true, do not provide any overrides to it\n const buildTargetOverrides = isCustomBuildTarget ? {} : mergedOptions;\n const build = await runExecutor(target, buildTargetOverrides, context);\n\n for await (const result of build) {\n if (result.success) {\n try {\n if (!server) {\n server = await preview(serverConfig);\n }\n server.printUrls();\n\n const resolvedUrls = [\n ...server.resolvedUrls.local,\n ...server.resolvedUrls.network,\n ];\n\n yield {\n success: true,\n baseUrl: resolvedUrls[0] ?? '',\n };\n } catch (e) {\n console.error(e);\n yield {\n success: false,\n baseUrl: '',\n };\n }\n } else {\n yield {\n success: false,\n baseUrl: '',\n };\n }\n }\n\n await new Promise<void>((resolve) => {\n process.once('SIGINT', () => resolve());\n process.once('SIGTERM', () => resolve());\n process.once('exit', () => resolve());\n });\n}\n\nfunction closeServer(server?: Record<string, any>): Promise<void> {\n return new Promise((resolve) => {\n if (!server) {\n resolve();\n } else {\n const { httpServer } = server;\n if (httpServer['closeAllConnections']) {\n // https://github.com/vitejs/vite/pull/14834\n // closeAllConnections was added in Node v18.2.0\n // typically is \"as http.Server\" but no reason\n // to import http just for this\n (httpServer as any).closeAllConnections();\n }\n httpServer.close(() => resolve());\n }\n });\n}\n\nexport default vitePreviewServerExecutor;\n\nasync function getExtraArgs(\n options: VitePreviewServerExecutorOptions,\n configuration: string | undefined,\n otherOptionsFromBuildTarget: Record<string, unknown> | undefined\n): Promise<{\n // vite PreviewOptions\n previewOptions: Record<string, any>;\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 previewOptions = {};\n const previewSchemaKeys = [\n 'port',\n 'strictPort',\n 'host',\n 'https',\n 'open',\n 'proxy',\n 'cors',\n 'headers',\n ];\n\n let otherOptions = {};\n for (const key of Object.keys(extraArgs)) {\n if (previewSchemaKeys.includes(key)) {\n previewOptions[key] = extraArgs[key];\n } else {\n otherOptions[key] = extraArgs[key];\n }\n }\n\n if (configuration) {\n otherOptions = {\n ...otherOptions,\n ...(otherOptionsFromBuildTarget ?? {}),\n };\n }\n\n return {\n previewOptions,\n otherOptions,\n };\n}\n"],"names":["vitePreviewServerExecutor","options","context","resolved","process","env","VITE_CJS_IGNORE_WARNING","mergeConfig","preview","loadConfigFromFile","loadViteDynamicImport","projectRoot","projectsConfigurations","projects","projectName","root","target","parseTargetString","buildTarget","targetConfiguration","project","targets","Error","isCustomBuildTarget","executor","buildTargetOptions","getNxTargetOptions","configuration","viteConfigPath","normalizeViteConfigFilePath","configFile","buildOptions","otherOptions","otherOptionsFromBuild","getBuildExtraArgs","previewOptions","getExtraArgs","mode","command","outDir","staticFilePath","joinPathFragments","offsetFromRoot","outputPath","config","build","cwd","relative","mergedOptions","watch","getProxyConfig","proxyConfig","serverConfig","console","warn","server","processOnExit","closeServer","once","buildTargetOverrides","runExecutor","result","success","printUrls","resolvedUrls","local","network","baseUrl","e","error","Promise","resolve","httpServer","closeAllConnections","close","otherOptionsFromBuildTarget","schema","extraArgs","key","Object","keys","properties","previewSchemaKeys","includes"],"mappings":"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"}
@@ -17,10 +17,11 @@ const _extends = require("@swc/helpers/_/_extends");
17
17
  const _devkit = require("@nx/devkit");
18
18
  const _optionsutils = require("../../../utils/options-utils");
19
19
  const _path = require("path");
20
+ const _executorutils = require("../../../utils/executor-utils");
20
21
  async function getOptions(options, context, projectRoot, extraArgs) {
21
22
  var _resolved_config, _resolved_config1;
22
23
  // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.
23
- const { loadConfigFromFile, mergeConfig } = await Function('return import("vite")')();
24
+ const { loadConfigFromFile, mergeConfig } = await (0, _executorutils.loadViteDynamicImport)();
24
25
  const viteConfigPath = (0, _optionsutils.normalizeViteConfigFilePath)(context.root, projectRoot, options.configFile);
25
26
  if (!viteConfigPath) {
26
27
  throw new Error((0, _devkit.stripIndents)`
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../packages/vite/src/executors/test/lib/utils.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n logger,\n stripIndents,\n} from '@nx/devkit';\nimport { VitestExecutorOptions } from '../schema';\nimport { normalizeViteConfigFilePath } from '../../../utils/options-utils';\nimport { relative } from 'path';\n\nexport async function getOptions(\n options: VitestExecutorOptions,\n context: ExecutorContext,\n projectRoot: string,\n extraArgs: Record<string, any>\n) {\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { loadConfigFromFile, mergeConfig } = await (Function(\n 'return import(\"vite\")'\n )() as Promise<typeof import('vite')>);\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n options.configFile\n );\n\n if (!viteConfigPath) {\n throw new Error(\n stripIndents`\n Unable to load test config from config file ${viteConfigPath}.\n \n Please make sure that vitest is configured correctly, \n or use the @nx/vite:vitest generator to configure it for you.\n You can read more here: https://nx.dev/nx-api/vite/generators/vitest\n `\n );\n }\n\n const resolved = await loadConfigFromFile(\n {\n mode: extraArgs?.mode ?? 'production',\n command: 'serve',\n },\n viteConfigPath\n );\n\n if (!viteConfigPath || !resolved?.config?.['test']) {\n logger.warn(stripIndents`Unable to load test config from config file ${\n resolved?.path ?? viteConfigPath\n }\n Some settings may not be applied as expected.\n You can manually set the config in the project, ${\n context.projectName\n }, configuration.\n `);\n }\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n const settings = {\n ...extraArgs,\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.config.root ?? root,\n configFile: viteConfigPath,\n };\n\n return mergeConfig(resolved?.config?.['test'] ?? {}, settings);\n}\n\nexport async function getExtraArgs(\n options: VitestExecutorOptions\n): Promise<Record<string, any>> {\n // support passing extra args to vite cli\n const extraArgs: Record<string, any> = {};\n for (const key of Object.keys(options)) {\n extraArgs[key] = options[key];\n }\n\n return extraArgs;\n}\n"],"names":["getOptions","getExtraArgs","options","context","projectRoot","extraArgs","resolved","loadConfigFromFile","mergeConfig","Function","viteConfigPath","normalizeViteConfigFilePath","root","configFile","Error","stripIndents","mode","command","config","logger","warn","path","projectName","process","cwd","relative","joinPathFragments","settings","key","Object","keys"],"mappings":";;;;;;;;IAUsBA,UAAU;eAAVA;;IA+DAC,YAAY;eAAZA;;;;wBApEf;8BAEqC;sBACnB;AAElB,eAAeD,WACpBE,OAA8B,EAC9BC,OAAwB,EACxBC,WAAmB,EACnBC,SAA8B;QAiCNC,kBAuBLA;IAtDnB,yFAAyF;IACzF,MAAM,EAAEC,kBAAkB,EAAEC,WAAW,EAAE,GAAG,MAAOC,SACjD;IAGF,MAAMC,iBAAiBC,IAAAA,yCAA2B,EAChDR,QAAQS,IAAI,EACZR,aACAF,QAAQW,UAAU;IAGpB,IAAI,CAACH,gBAAgB;QACnB,MAAM,IAAII,MACRC,IAAAA,oBAAY,CAAA,CAAC;oDACiC,EAAEL,eAAe;;;;;QAK7D,CAAC;IAEP;QAIUL;IAFV,MAAMC,WAAW,MAAMC,mBACrB;QACES,MAAMX,CAAAA,kBAAAA,6BAAAA,UAAWW,IAAI,YAAfX,kBAAmB;QACzBY,SAAS;IACX,GACAP;IAGF,IAAI,CAACA,kBAAkB,EAACJ,6BAAAA,mBAAAA,SAAUY,MAAM,qBAAhBZ,gBAAkB,CAAC,OAAO,GAAE;YAEhDA;QADFa,cAAM,CAACC,IAAI,CAACL,IAAAA,oBAAY,CAAA,CAAC,4CAA4C,EACnET,CAAAA,iBAAAA,4BAAAA,SAAUe,IAAI,YAAdf,iBAAkBI,eACnB;;kDAE6C,EAC9CP,QAAQmB,WAAW,CACpB;QACK,CAAC;IACP;IACA,MAAMV,OACJR,gBAAgB,MACZmB,QAAQC,GAAG,KACXC,IAAAA,cAAQ,EAACtB,QAAQqB,GAAG,EAAEE,IAAAA,yBAAiB,EAACvB,QAAQS,IAAI,EAAER;QAMpDE;IAJR,MAAMqB,WAAW,eACZtB;QACH,sEAAsE;QACtE,gEAAgE;QAChEO,MAAMN,CAAAA,wBAAAA,SAASY,MAAM,CAACN,IAAI,YAApBN,wBAAwBM;QAC9BC,YAAYH;;QAGKJ;IAAnB,OAAOE,YAAYF,CAAAA,wBAAAA,6BAAAA,oBAAAA,SAAUY,MAAM,qBAAhBZ,iBAAkB,CAAC,OAAO,YAA1BA,wBAA8B,CAAC,GAAGqB;AACvD;AAEO,eAAe1B,aACpBC,OAA8B;IAE9B,yCAAyC;IACzC,MAAMG,YAAiC,CAAC;IACxC,KAAK,MAAMuB,OAAOC,OAAOC,IAAI,CAAC5B,SAAU;QACtCG,SAAS,CAACuB,IAAI,GAAG1B,OAAO,CAAC0B,IAAI;IAC/B;IAEA,OAAOvB;AACT"}
1
+ {"version":3,"sources":["../../../../../../../packages/vite/src/executors/test/lib/utils.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n logger,\n stripIndents,\n} from '@nx/devkit';\nimport { VitestExecutorOptions } from '../schema';\nimport { normalizeViteConfigFilePath } from '../../../utils/options-utils';\nimport { relative } from 'path';\nimport { loadViteDynamicImport } from '../../../utils/executor-utils';\n\nexport async function getOptions(\n options: VitestExecutorOptions,\n context: ExecutorContext,\n projectRoot: string,\n extraArgs: Record<string, any>\n) {\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { loadConfigFromFile, mergeConfig } = await loadViteDynamicImport();\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n options.configFile\n );\n\n if (!viteConfigPath) {\n throw new Error(\n stripIndents`\n Unable to load test config from config file ${viteConfigPath}.\n \n Please make sure that vitest is configured correctly, \n or use the @nx/vite:vitest generator to configure it for you.\n You can read more here: https://nx.dev/nx-api/vite/generators/vitest\n `\n );\n }\n\n const resolved = await loadConfigFromFile(\n {\n mode: extraArgs?.mode ?? 'production',\n command: 'serve',\n },\n viteConfigPath\n );\n\n if (!viteConfigPath || !resolved?.config?.['test']) {\n logger.warn(stripIndents`Unable to load test config from config file ${\n resolved?.path ?? viteConfigPath\n }\n Some settings may not be applied as expected.\n You can manually set the config in the project, ${\n context.projectName\n }, configuration.\n `);\n }\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n const settings = {\n ...extraArgs,\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.config.root ?? root,\n configFile: viteConfigPath,\n };\n\n return mergeConfig(resolved?.config?.['test'] ?? {}, settings);\n}\n\nexport async function getExtraArgs(\n options: VitestExecutorOptions\n): Promise<Record<string, any>> {\n // support passing extra args to vite cli\n const extraArgs: Record<string, any> = {};\n for (const key of Object.keys(options)) {\n extraArgs[key] = options[key];\n }\n\n return extraArgs;\n}\n"],"names":["getOptions","getExtraArgs","options","context","projectRoot","extraArgs","resolved","loadConfigFromFile","mergeConfig","loadViteDynamicImport","viteConfigPath","normalizeViteConfigFilePath","root","configFile","Error","stripIndents","mode","command","config","logger","warn","path","projectName","process","cwd","relative","joinPathFragments","settings","key","Object","keys"],"mappings":";;;;;;;;IAWsBA,UAAU;eAAVA;;IA6DAC,YAAY;eAAZA;;;;wBAnEf;8BAEqC;sBACnB;+BACa;AAE/B,eAAeD,WACpBE,OAA8B,EAC9BC,OAAwB,EACxBC,WAAmB,EACnBC,SAA8B;QA+BNC,kBAuBLA;IApDnB,yFAAyF;IACzF,MAAM,EAAEC,kBAAkB,EAAEC,WAAW,EAAE,GAAG,MAAMC,IAAAA,oCAAqB;IAEvE,MAAMC,iBAAiBC,IAAAA,yCAA2B,EAChDR,QAAQS,IAAI,EACZR,aACAF,QAAQW,UAAU;IAGpB,IAAI,CAACH,gBAAgB;QACnB,MAAM,IAAII,MACRC,IAAAA,oBAAY,CAAA,CAAC;oDACiC,EAAEL,eAAe;;;;;QAK7D,CAAC;IAEP;QAIUL;IAFV,MAAMC,WAAW,MAAMC,mBACrB;QACES,MAAMX,CAAAA,kBAAAA,6BAAAA,UAAWW,IAAI,YAAfX,kBAAmB;QACzBY,SAAS;IACX,GACAP;IAGF,IAAI,CAACA,kBAAkB,EAACJ,6BAAAA,mBAAAA,SAAUY,MAAM,qBAAhBZ,gBAAkB,CAAC,OAAO,GAAE;YAEhDA;QADFa,cAAM,CAACC,IAAI,CAACL,IAAAA,oBAAY,CAAA,CAAC,4CAA4C,EACnET,CAAAA,iBAAAA,4BAAAA,SAAUe,IAAI,YAAdf,iBAAkBI,eACnB;;kDAE6C,EAC9CP,QAAQmB,WAAW,CACpB;QACK,CAAC;IACP;IACA,MAAMV,OACJR,gBAAgB,MACZmB,QAAQC,GAAG,KACXC,IAAAA,cAAQ,EAACtB,QAAQqB,GAAG,EAAEE,IAAAA,yBAAiB,EAACvB,QAAQS,IAAI,EAAER;QAMpDE;IAJR,MAAMqB,WAAW,eACZtB;QACH,sEAAsE;QACtE,gEAAgE;QAChEO,MAAMN,CAAAA,wBAAAA,SAASY,MAAM,CAACN,IAAI,YAApBN,wBAAwBM;QAC9BC,YAAYH;;QAGKJ;IAAnB,OAAOE,YAAYF,CAAAA,wBAAAA,6BAAAA,oBAAAA,SAAUY,MAAM,qBAAhBZ,iBAAkB,CAAC,OAAO,YAA1BA,wBAA8B,CAAC,GAAGqB;AACvD;AAEO,eAAe1B,aACpBC,OAA8B;IAE9B,yCAAyC;IACzC,MAAMG,YAAiC,CAAC;IACxC,KAAK,MAAMuB,OAAOC,OAAOC,IAAI,CAAC5B,SAAU;QACtCG,SAAS,CAACuB,IAAI,GAAG1B,OAAO,CAAC0B,IAAI;IAC/B;IAEA,OAAOvB;AACT"}
@@ -35,8 +35,8 @@ async function updateBuildDir(tree) {
35
35
  let configContents = tree.read(config, 'utf-8');
36
36
  configContents = (0, _editbuildconfig.updateBuildOutDirAndRoot)(options, configContents, projectConfig, targetName, tree, projectName, config);
37
37
  configContents = (0, _edittestconfig.updateTestConfig)(configContents, projectConfig, config);
38
- if (((_options_fileReplacements = options.fileReplacements) == null ? void 0 : _options_fileReplacements.length) > 0) {
39
- configContents = (0, _addfilereplacements.addFileReplacements)(configContents, options.fileReplacements, config);
38
+ if (((_options_fileReplacements = options['fileReplacements']) == null ? void 0 : _options_fileReplacements.length) > 0) {
39
+ configContents = (0, _addfilereplacements.addFileReplacements)(configContents, options['fileReplacements'], config);
40
40
  }
41
41
  tree.write(config, configContents);
42
42
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/migrations/update-17-2-0/update-vite-config.ts"],"sourcesContent":["import {\n Tree,\n formatFiles,\n getProjects,\n joinPathFragments,\n logger,\n} from '@nx/devkit';\nimport { forEachExecutorOptions } from '@nx/devkit/src/generators/executor-options-utils';\nimport { ViteBuildExecutorOptions } from '../../executors/build/schema';\nimport { updateBuildOutDirAndRoot } from './lib/edit-build-config';\nimport { updateTestConfig } from './lib/edit-test-config';\nimport { addFileReplacements } from './lib/add-file-replacements';\nimport { tsquery } from '@phenomnomnominal/tsquery';\nimport ts = require('typescript');\n\nexport default async function updateBuildDir(tree: Tree) {\n const projects = getProjects(tree);\n forEachExecutorOptions<ViteBuildExecutorOptions>(\n tree,\n '@nx/vite:build',\n (options, projectName, targetName) => {\n const projectConfig = projects.get(projectName);\n const config =\n options.configFile || findViteConfig(tree, projectConfig.root);\n if (!config || !tree.exists(config)) {\n return;\n }\n let configContents = tree.read(config, 'utf-8');\n\n configContents = updateBuildOutDirAndRoot(\n options,\n configContents,\n projectConfig,\n targetName,\n tree,\n projectName,\n config\n );\n\n configContents = updateTestConfig(configContents, projectConfig, config);\n\n if (options.fileReplacements?.length > 0) {\n configContents = addFileReplacements(\n configContents,\n options.fileReplacements,\n config\n );\n }\n\n tree.write(config, configContents);\n }\n );\n\n await formatFiles(tree);\n}\n\nfunction findViteConfig(tree: Tree, searchRoot: string) {\n const allowsExt = ['js', 'mjs', 'ts', 'cjs', 'mts', 'cts'];\n\n for (const ext of allowsExt) {\n if (tree.exists(joinPathFragments(searchRoot, `vite.config.${ext}`))) {\n return joinPathFragments(searchRoot, `vite.config.${ext}`);\n }\n }\n}\n\nexport function getConfigNode(configFileContents: string): ts.Node | undefined {\n if (!configFileContents) {\n return;\n }\n let configNode = tsquery.query(\n configFileContents,\n `ObjectLiteralExpression`\n )?.[0];\n\n const arrowFunctionReturnStatement = tsquery.query(\n configFileContents,\n `ArrowFunction Block ReturnStatement ObjectLiteralExpression`\n )?.[0];\n\n if (arrowFunctionReturnStatement) {\n configNode = arrowFunctionReturnStatement;\n }\n\n return configNode;\n}\n\nexport function notFoundWarning(configPath: string) {\n logger.warn(`\n Could not migrate your ${configPath} file.\n Please add the build.outDir and root options in your ${configPath} file.\n You can find more information on how to configure vite for Nx here:\n \n https://nx.dev/recipes/vite/configure-vite\n `);\n}\n"],"names":["updateBuildDir","getConfigNode","notFoundWarning","ts","tree","projects","getProjects","forEachExecutorOptions","options","projectName","targetName","projectConfig","get","config","configFile","findViteConfig","root","exists","configContents","read","updateBuildOutDirAndRoot","updateTestConfig","fileReplacements","length","addFileReplacements","write","formatFiles","searchRoot","allowsExt","ext","joinPathFragments","configFileContents","tsquery","configNode","query","arrowFunctionReturnStatement","configPath","logger","warn"],"mappings":";;;;;;;;IAeA,OAuCC;eAvC6BA;;IAmDdC,aAAa;eAAbA;;IAqBAC,eAAe;eAAfA;;;wBAjFT;sCACgC;iCAEE;gCACR;qCACG;yBACZ;AACxB,MAAOC,aAAa;AAEL,eAAeH,eAAeI,IAAU;IACrD,MAAMC,WAAWC,IAAAA,mBAAW,EAACF;IAC7BG,IAAAA,4CAAsB,EACpBH,MACA,kBACA,CAACI,SAASC,aAAaC;YAqBjBF;QApBJ,MAAMG,gBAAgBN,SAASO,GAAG,CAACH;QACnC,MAAMI,SACJL,QAAQM,UAAU,IAAIC,eAAeX,MAAMO,cAAcK,IAAI;QAC/D,IAAI,CAACH,UAAU,CAACT,KAAKa,MAAM,CAACJ,SAAS;YACnC;QACF;QACA,IAAIK,iBAAiBd,KAAKe,IAAI,CAACN,QAAQ;QAEvCK,iBAAiBE,IAAAA,yCAAwB,EACvCZ,SACAU,gBACAP,eACAD,YACAN,MACAK,aACAI;QAGFK,iBAAiBG,IAAAA,gCAAgB,EAACH,gBAAgBP,eAAeE;QAEjE,IAAIL,EAAAA,4BAAAA,QAAQc,gBAAgB,qBAAxBd,0BAA0Be,MAAM,IAAG,GAAG;YACxCL,iBAAiBM,IAAAA,wCAAmB,EAClCN,gBACAV,QAAQc,gBAAgB,EACxBT;QAEJ;QAEAT,KAAKqB,KAAK,CAACZ,QAAQK;IACrB;IAGF,MAAMQ,IAAAA,mBAAW,EAACtB;AACpB;AAEA,SAASW,eAAeX,IAAU,EAAEuB,UAAkB;IACpD,MAAMC,YAAY;QAAC;QAAM;QAAO;QAAM;QAAO;QAAO;KAAM;IAE1D,KAAK,MAAMC,OAAOD,UAAW;QAC3B,IAAIxB,KAAKa,MAAM,CAACa,IAAAA,yBAAiB,EAACH,YAAY,CAAC,YAAY,EAAEE,IAAI,CAAC,IAAI;YACpE,OAAOC,IAAAA,yBAAiB,EAACH,YAAY,CAAC,YAAY,EAAEE,IAAI,CAAC;QAC3D;IACF;AACF;AAEO,SAAS5B,cAAc8B,kBAA0B;QAIrCC,gBAKoBA;IARrC,IAAI,CAACD,oBAAoB;QACvB;IACF;IACA,IAAIE,cAAaD,iBAAAA,gBAAO,CAACE,KAAK,CAC5BH,oBACA,CAAC,uBAAuB,CAAC,sBAFVC,cAGd,CAAC,EAAE;IAEN,MAAMG,gCAA+BH,kBAAAA,gBAAO,CAACE,KAAK,CAChDH,oBACA,CAAC,2DAA2D,CAAC,sBAF1BC,eAGlC,CAAC,EAAE;IAEN,IAAIG,8BAA8B;QAChCF,aAAaE;IACf;IAEA,OAAOF;AACT;AAEO,SAAS/B,gBAAgBkC,UAAkB;IAChDC,cAAM,CAACC,IAAI,CAAC,CAAC;yBACU,EAAEF,WAAW;uDACiB,EAAEA,WAAW;;;;EAIlE,CAAC;AACH"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/migrations/update-17-2-0/update-vite-config.ts"],"sourcesContent":["import {\n Tree,\n formatFiles,\n getProjects,\n joinPathFragments,\n logger,\n} from '@nx/devkit';\nimport { forEachExecutorOptions } from '@nx/devkit/src/generators/executor-options-utils';\nimport { ViteBuildExecutorOptions } from '../../executors/build/schema';\nimport { updateBuildOutDirAndRoot } from './lib/edit-build-config';\nimport { updateTestConfig } from './lib/edit-test-config';\nimport { addFileReplacements } from './lib/add-file-replacements';\nimport { tsquery } from '@phenomnomnominal/tsquery';\nimport ts = require('typescript');\n\nexport default async function updateBuildDir(tree: Tree) {\n const projects = getProjects(tree);\n forEachExecutorOptions<ViteBuildExecutorOptions>(\n tree,\n '@nx/vite:build',\n (options, projectName, targetName) => {\n const projectConfig = projects.get(projectName);\n const config =\n options.configFile || findViteConfig(tree, projectConfig.root);\n if (!config || !tree.exists(config)) {\n return;\n }\n let configContents = tree.read(config, 'utf-8');\n\n configContents = updateBuildOutDirAndRoot(\n options,\n configContents,\n projectConfig,\n targetName,\n tree,\n projectName,\n config\n );\n\n configContents = updateTestConfig(configContents, projectConfig, config);\n\n if (options['fileReplacements']?.length > 0) {\n configContents = addFileReplacements(\n configContents,\n options['fileReplacements'],\n config\n );\n }\n\n tree.write(config, configContents);\n }\n );\n\n await formatFiles(tree);\n}\n\nfunction findViteConfig(tree: Tree, searchRoot: string) {\n const allowsExt = ['js', 'mjs', 'ts', 'cjs', 'mts', 'cts'];\n\n for (const ext of allowsExt) {\n if (tree.exists(joinPathFragments(searchRoot, `vite.config.${ext}`))) {\n return joinPathFragments(searchRoot, `vite.config.${ext}`);\n }\n }\n}\n\nexport function getConfigNode(configFileContents: string): ts.Node | undefined {\n if (!configFileContents) {\n return;\n }\n let configNode = tsquery.query(\n configFileContents,\n `ObjectLiteralExpression`\n )?.[0];\n\n const arrowFunctionReturnStatement = tsquery.query(\n configFileContents,\n `ArrowFunction Block ReturnStatement ObjectLiteralExpression`\n )?.[0];\n\n if (arrowFunctionReturnStatement) {\n configNode = arrowFunctionReturnStatement;\n }\n\n return configNode;\n}\n\nexport function notFoundWarning(configPath: string) {\n logger.warn(`\n Could not migrate your ${configPath} file.\n Please add the build.outDir and root options in your ${configPath} file.\n You can find more information on how to configure vite for Nx here:\n \n https://nx.dev/recipes/vite/configure-vite\n `);\n}\n"],"names":["updateBuildDir","getConfigNode","notFoundWarning","ts","tree","projects","getProjects","forEachExecutorOptions","options","projectName","targetName","projectConfig","get","config","configFile","findViteConfig","root","exists","configContents","read","updateBuildOutDirAndRoot","updateTestConfig","length","addFileReplacements","write","formatFiles","searchRoot","allowsExt","ext","joinPathFragments","configFileContents","tsquery","configNode","query","arrowFunctionReturnStatement","configPath","logger","warn"],"mappings":";;;;;;;;IAeA,OAuCC;eAvC6BA;;IAmDdC,aAAa;eAAbA;;IAqBAC,eAAe;eAAfA;;;wBAjFT;sCACgC;iCAEE;gCACR;qCACG;yBACZ;AACxB,MAAOC,aAAa;AAEL,eAAeH,eAAeI,IAAU;IACrD,MAAMC,WAAWC,IAAAA,mBAAW,EAACF;IAC7BG,IAAAA,4CAAsB,EACpBH,MACA,kBACA,CAACI,SAASC,aAAaC;YAqBjBF;QApBJ,MAAMG,gBAAgBN,SAASO,GAAG,CAACH;QACnC,MAAMI,SACJL,QAAQM,UAAU,IAAIC,eAAeX,MAAMO,cAAcK,IAAI;QAC/D,IAAI,CAACH,UAAU,CAACT,KAAKa,MAAM,CAACJ,SAAS;YACnC;QACF;QACA,IAAIK,iBAAiBd,KAAKe,IAAI,CAACN,QAAQ;QAEvCK,iBAAiBE,IAAAA,yCAAwB,EACvCZ,SACAU,gBACAP,eACAD,YACAN,MACAK,aACAI;QAGFK,iBAAiBG,IAAAA,gCAAgB,EAACH,gBAAgBP,eAAeE;QAEjE,IAAIL,EAAAA,4BAAAA,OAAO,CAAC,mBAAmB,qBAA3BA,0BAA6Bc,MAAM,IAAG,GAAG;YAC3CJ,iBAAiBK,IAAAA,wCAAmB,EAClCL,gBACAV,OAAO,CAAC,mBAAmB,EAC3BK;QAEJ;QAEAT,KAAKoB,KAAK,CAACX,QAAQK;IACrB;IAGF,MAAMO,IAAAA,mBAAW,EAACrB;AACpB;AAEA,SAASW,eAAeX,IAAU,EAAEsB,UAAkB;IACpD,MAAMC,YAAY;QAAC;QAAM;QAAO;QAAM;QAAO;QAAO;KAAM;IAE1D,KAAK,MAAMC,OAAOD,UAAW;QAC3B,IAAIvB,KAAKa,MAAM,CAACY,IAAAA,yBAAiB,EAACH,YAAY,CAAC,YAAY,EAAEE,IAAI,CAAC,IAAI;YACpE,OAAOC,IAAAA,yBAAiB,EAACH,YAAY,CAAC,YAAY,EAAEE,IAAI,CAAC;QAC3D;IACF;AACF;AAEO,SAAS3B,cAAc6B,kBAA0B;QAIrCC,gBAKoBA;IARrC,IAAI,CAACD,oBAAoB;QACvB;IACF;IACA,IAAIE,cAAaD,iBAAAA,gBAAO,CAACE,KAAK,CAC5BH,oBACA,CAAC,uBAAuB,CAAC,sBAFVC,cAGd,CAAC,EAAE;IAEN,MAAMG,gCAA+BH,kBAAAA,gBAAO,CAACE,KAAK,CAChDH,oBACA,CAAC,2DAA2D,CAAC,sBAF1BC,eAGlC,CAAC,EAAE;IAEN,IAAIG,8BAA8B;QAChCF,aAAaE;IACf;IAEA,OAAOF;AACT;AAEO,SAAS9B,gBAAgBiC,UAAkB;IAChDC,cAAM,CAACC,IAAI,CAAC,CAAC;yBACU,EAAEF,WAAW;uDACiB,EAAEA,WAAW;;;;EAIlE,CAAC;AACH"}
@@ -16,11 +16,11 @@ _export(exports, {
16
16
  const _devkit = require("@nx/devkit");
17
17
  const _path = require("path");
18
18
  const _getnamedinputs = require("@nx/devkit/src/utils/get-named-inputs");
19
- const _vite = require("vite");
20
19
  const _fs = require("fs");
21
20
  const _calculatehashforcreatenodes = require("@nx/devkit/src/utils/calculate-hash-for-create-nodes");
22
21
  const _cachedirectory = require("nx/src/utils/cache-directory");
23
22
  const _js = require("@nx/js");
23
+ const _executorutils = require("../utils/executor-utils");
24
24
  const cachePath = (0, _path.join)(_cachedirectory.projectGraphCacheDirectory, 'vite.hash');
25
25
  const targetsCache = (0, _fs.existsSync)(cachePath) ? readTargetsCache() : {};
26
26
  const calculatedTargets = {};
@@ -35,7 +35,7 @@ const createDependencies = ()=>{
35
35
  return [];
36
36
  };
37
37
  const createNodes = [
38
- '**/vite.config.{js,ts}',
38
+ '**/{vite,vitest}.config.{js,ts,mjs,mts,cjs,cts}',
39
39
  async (configFilePath, options, context)=>{
40
40
  const projectRoot = (0, _path.dirname)(configFilePath);
41
41
  // Do not create a project if package.json and project.json isn't there.
@@ -60,18 +60,25 @@ const createNodes = [
60
60
  }
61
61
  ];
62
62
  async function buildViteTargets(configFilePath, projectRoot, options, context) {
63
- const viteConfig = await (0, _vite.loadConfigFromFile)({
63
+ const { loadConfigFromFile } = await (0, _executorutils.loadViteDynamicImport)();
64
+ const viteConfig = await loadConfigFromFile({
64
65
  command: 'build',
65
66
  mode: 'production'
66
67
  }, configFilePath);
67
- const { buildOutputs, testOutputs } = getOutputs(viteConfig == null ? void 0 : viteConfig.config, projectRoot);
68
+ const { buildOutputs, testOutputs, hasTest } = getOutputs(viteConfig == null ? void 0 : viteConfig.config, projectRoot);
68
69
  const namedInputs = (0, _getnamedinputs.getNamedInputs)(projectRoot, context);
69
70
  const targets = {};
70
- targets[options.buildTargetName] = await buildTarget(options.buildTargetName, namedInputs, buildOutputs, projectRoot);
71
- targets[options.serveTargetName] = serveTarget(projectRoot);
72
- targets[options.previewTargetName] = previewTarget(projectRoot);
73
- targets[options.testTargetName] = await testTarget(namedInputs, testOutputs, projectRoot);
74
- targets[options.serveStaticTargetName] = serveStaticTarget(options);
71
+ // If file is not vitest.config, create targets for build, serve, preview and serve-static
72
+ if (!configFilePath.includes('vitest.config')) {
73
+ targets[options.buildTargetName] = await buildTarget(options.buildTargetName, namedInputs, buildOutputs, projectRoot);
74
+ targets[options.serveTargetName] = serveTarget(projectRoot);
75
+ targets[options.previewTargetName] = previewTarget(projectRoot);
76
+ targets[options.serveStaticTargetName] = serveStaticTarget(options);
77
+ }
78
+ // if file is vitest.config or vite.config has definition for test, create target for test
79
+ if (configFilePath.includes('vitest.config') || hasTest) {
80
+ targets[options.testTargetName] = await testTarget(namedInputs, testOutputs, projectRoot);
81
+ }
75
82
  return targets;
76
83
  }
77
84
  async function buildTarget(buildTargetName, namedInputs, outputs, projectRoot) {
@@ -155,28 +162,34 @@ function serveStaticTarget(options) {
155
162
  function getOutputs(viteConfig, projectRoot) {
156
163
  var _test_coverage;
157
164
  const { build, test } = viteConfig;
158
- var _normalizeOutputPath;
159
- const buildOutputPath = (_normalizeOutputPath = normalizeOutputPath(build == null ? void 0 : build.outDir, projectRoot)) != null ? _normalizeOutputPath : '{workspaceRoot}/dist/{projectRoot}';
160
- var _normalizeOutputPath1;
161
- const reportsDirectoryPath = (_normalizeOutputPath1 = normalizeOutputPath(test == null ? void 0 : (_test_coverage = test.coverage) == null ? void 0 : _test_coverage.reportsDirectory, projectRoot)) != null ? _normalizeOutputPath1 : '{workspaceRoot}/coverage/{projectRoot}';
165
+ const buildOutputPath = normalizeOutputPath(build == null ? void 0 : build.outDir, projectRoot, 'dist');
166
+ const reportsDirectoryPath = normalizeOutputPath(test == null ? void 0 : (_test_coverage = test.coverage) == null ? void 0 : _test_coverage.reportsDirectory, projectRoot, 'coverage');
162
167
  return {
163
168
  buildOutputs: [
164
169
  buildOutputPath
165
170
  ],
166
171
  testOutputs: [
167
172
  reportsDirectoryPath
168
- ]
173
+ ],
174
+ hasTest: !!test
169
175
  };
170
176
  }
171
- function normalizeOutputPath(outputPath, projectRoot) {
172
- if (!outputPath) return undefined;
173
- if ((0, _path.isAbsolute)(outputPath)) {
174
- return `{workspaceRoot}/${(0, _path.relative)(_devkit.workspaceRoot, outputPath)}`;
177
+ function normalizeOutputPath(outputPath, projectRoot, path) {
178
+ if (!outputPath) {
179
+ if (projectRoot === '.') {
180
+ return `{projectRoot}/${path}`;
181
+ } else {
182
+ return `{workspaceRoot}/${path}/{projectRoot}`;
183
+ }
175
184
  } else {
176
- if (outputPath.startsWith('..')) {
177
- return (0, _path.join)('{workspaceRoot}', (0, _path.join)(projectRoot, outputPath));
185
+ if ((0, _path.isAbsolute)(outputPath)) {
186
+ return `{workspaceRoot}/${(0, _path.relative)(_devkit.workspaceRoot, outputPath)}`;
178
187
  } else {
179
- return outputPath;
188
+ if (outputPath.startsWith('..')) {
189
+ return (0, _path.join)('{workspaceRoot}', (0, _path.join)(projectRoot, outputPath));
190
+ } else {
191
+ return (0, _path.join)('{projectRoot}', outputPath);
192
+ }
180
193
  }
181
194
  }
182
195
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/vite/src/plugins/plugin.ts"],"sourcesContent":["import {\n CreateDependencies,\n CreateNodes,\n CreateNodesContext,\n detectPackageManager,\n joinPathFragments,\n readJsonFile,\n TargetConfiguration,\n workspaceRoot,\n writeJsonFile,\n} from '@nx/devkit';\nimport { dirname, isAbsolute, join, relative } from 'path';\nimport { getNamedInputs } from '@nx/devkit/src/utils/get-named-inputs';\nimport { loadConfigFromFile, UserConfig } from 'vite';\nimport { existsSync, readdirSync } from 'fs';\nimport { calculateHashForCreateNodes } from '@nx/devkit/src/utils/calculate-hash-for-create-nodes';\nimport { projectGraphCacheDirectory } from 'nx/src/utils/cache-directory';\nimport { getLockFileName } from '@nx/js';\n\nexport interface VitePluginOptions {\n buildTargetName?: string;\n testTargetName?: string;\n serveTargetName?: string;\n previewTargetName?: string;\n serveStaticTargetName?: string;\n}\n\nconst cachePath = join(projectGraphCacheDirectory, 'vite.hash');\nconst targetsCache = existsSync(cachePath) ? readTargetsCache() : {};\n\nconst calculatedTargets: Record<\n string,\n Record<string, TargetConfiguration>\n> = {};\n\nfunction readTargetsCache(): Record<\n string,\n Record<string, TargetConfiguration>\n> {\n return readJsonFile(cachePath);\n}\n\nfunction writeTargetsToCache(\n targets: Record<string, Record<string, TargetConfiguration>>\n) {\n writeJsonFile(cachePath, targets);\n}\n\nexport const createDependencies: CreateDependencies = () => {\n writeTargetsToCache(calculatedTargets);\n return [];\n};\n\nexport const createNodes: CreateNodes<VitePluginOptions> = [\n '**/vite.config.{js,ts}',\n async (configFilePath, options, context) => {\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 options = normalizeOptions(options);\n\n const hash = calculateHashForCreateNodes(projectRoot, options, context, [\n getLockFileName(detectPackageManager(context.workspaceRoot)),\n ]);\n const targets = targetsCache[hash]\n ? targetsCache[hash]\n : await buildViteTargets(configFilePath, projectRoot, options, context);\n\n calculatedTargets[hash] = targets;\n\n return {\n projects: {\n [projectRoot]: {\n root: projectRoot,\n targets,\n },\n },\n };\n },\n];\n\nasync function buildViteTargets(\n configFilePath: string,\n projectRoot: string,\n options: VitePluginOptions,\n context: CreateNodesContext\n) {\n const viteConfig = await loadConfigFromFile(\n {\n command: 'build',\n mode: 'production',\n },\n configFilePath\n );\n\n const { buildOutputs, testOutputs } = getOutputs(\n viteConfig?.config,\n projectRoot\n );\n\n const namedInputs = getNamedInputs(projectRoot, context);\n\n const targets: Record<string, TargetConfiguration> = {};\n\n targets[options.buildTargetName] = await buildTarget(\n options.buildTargetName,\n namedInputs,\n buildOutputs,\n projectRoot\n );\n\n targets[options.serveTargetName] = serveTarget(projectRoot);\n\n targets[options.previewTargetName] = previewTarget(projectRoot);\n\n targets[options.testTargetName] = await testTarget(\n namedInputs,\n testOutputs,\n projectRoot\n );\n\n targets[options.serveStaticTargetName] = serveStaticTarget(options) as {};\n\n return targets;\n}\n\nasync function buildTarget(\n buildTargetName: string,\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string\n) {\n return {\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 };\n}\n\nfunction serveTarget(projectRoot: string) {\n const targetConfig: TargetConfiguration = {\n command: `vite serve`,\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n };\n\n return targetConfig;\n}\n\nfunction previewTarget(projectRoot: string) {\n const targetConfig: TargetConfiguration = {\n command: `vite preview`,\n options: {\n cwd: joinPathFragments(projectRoot),\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 run`,\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 ],\n outputs,\n };\n}\n\nfunction serveStaticTarget(options: VitePluginOptions) {\n const targetConfig: TargetConfiguration = {\n executor: '@nx/web:file-server',\n options: {\n buildTarget: `${options.buildTargetName}`,\n },\n };\n\n return targetConfig;\n}\n\nfunction getOutputs(\n viteConfig: UserConfig,\n projectRoot: string\n): {\n buildOutputs: string[];\n testOutputs: string[];\n} {\n const { build, test } = viteConfig;\n\n const buildOutputPath =\n normalizeOutputPath(build?.outDir, projectRoot) ??\n '{workspaceRoot}/dist/{projectRoot}';\n\n const reportsDirectoryPath =\n normalizeOutputPath(test?.coverage?.reportsDirectory, projectRoot) ??\n '{workspaceRoot}/coverage/{projectRoot}';\n\n return {\n buildOutputs: [buildOutputPath],\n testOutputs: [reportsDirectoryPath],\n };\n}\n\nfunction normalizeOutputPath(\n outputPath: string | undefined,\n projectRoot: string\n): string | undefined {\n if (!outputPath) return undefined;\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 outputPath;\n }\n }\n}\n\nfunction normalizeOptions(options: VitePluginOptions): VitePluginOptions {\n options ??= {};\n options.buildTargetName ??= 'build';\n options.serveTargetName ??= 'serve';\n options.previewTargetName ??= 'preview';\n options.testTargetName ??= 'test';\n options.serveStaticTargetName ??= 'serve-static';\n return options;\n}\n"],"names":["createDependencies","createNodes","cachePath","join","projectGraphCacheDirectory","targetsCache","existsSync","readTargetsCache","calculatedTargets","readJsonFile","writeTargetsToCache","targets","writeJsonFile","configFilePath","options","context","projectRoot","dirname","siblingFiles","readdirSync","workspaceRoot","includes","normalizeOptions","hash","calculateHashForCreateNodes","getLockFileName","detectPackageManager","buildViteTargets","projects","root","viteConfig","loadConfigFromFile","command","mode","buildOutputs","testOutputs","getOutputs","config","namedInputs","getNamedInputs","buildTargetName","buildTarget","serveTargetName","serveTarget","previewTargetName","previewTarget","testTargetName","testTarget","serveStaticTargetName","serveStaticTarget","outputs","cwd","joinPathFragments","cache","dependsOn","inputs","externalDependencies","targetConfig","executor","test","build","normalizeOutputPath","buildOutputPath","outDir","reportsDirectoryPath","coverage","reportsDirectory","outputPath","undefined","isAbsolute","relative","startsWith"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../packages/vite/src/plugins/plugin.ts"],"sourcesContent":["import {\n CreateDependencies,\n CreateNodes,\n CreateNodesContext,\n detectPackageManager,\n joinPathFragments,\n readJsonFile,\n TargetConfiguration,\n workspaceRoot,\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 { calculateHashForCreateNodes } from '@nx/devkit/src/utils/calculate-hash-for-create-nodes';\nimport { projectGraphCacheDirectory } from 'nx/src/utils/cache-directory';\nimport { getLockFileName } from '@nx/js';\nimport { loadViteDynamicImport } from '../utils/executor-utils';\n\nexport interface VitePluginOptions {\n buildTargetName?: string;\n testTargetName?: string;\n serveTargetName?: string;\n previewTargetName?: string;\n serveStaticTargetName?: string;\n}\n\nconst cachePath = join(projectGraphCacheDirectory, 'vite.hash');\nconst targetsCache = existsSync(cachePath) ? readTargetsCache() : {};\n\nconst calculatedTargets: Record<\n string,\n Record<string, TargetConfiguration>\n> = {};\n\nfunction readTargetsCache(): Record<\n string,\n Record<string, TargetConfiguration>\n> {\n return readJsonFile(cachePath);\n}\n\nfunction writeTargetsToCache(\n targets: Record<string, Record<string, TargetConfiguration>>\n) {\n writeJsonFile(cachePath, targets);\n}\n\nexport const createDependencies: CreateDependencies = () => {\n writeTargetsToCache(calculatedTargets);\n return [];\n};\n\nexport const createNodes: CreateNodes<VitePluginOptions> = [\n '**/{vite,vitest}.config.{js,ts,mjs,mts,cjs,cts}',\n async (configFilePath, options, context) => {\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 options = normalizeOptions(options);\n\n const hash = calculateHashForCreateNodes(projectRoot, options, context, [\n getLockFileName(detectPackageManager(context.workspaceRoot)),\n ]);\n const targets = targetsCache[hash]\n ? targetsCache[hash]\n : await buildViteTargets(configFilePath, projectRoot, options, context);\n\n calculatedTargets[hash] = targets;\n\n return {\n projects: {\n [projectRoot]: {\n root: projectRoot,\n targets,\n },\n },\n };\n },\n];\n\nasync function buildViteTargets(\n configFilePath: string,\n projectRoot: string,\n options: VitePluginOptions,\n context: CreateNodesContext\n) {\n const { loadConfigFromFile } = await loadViteDynamicImport();\n const viteConfig = await loadConfigFromFile(\n {\n command: 'build',\n mode: 'production',\n },\n configFilePath\n );\n\n const { buildOutputs, testOutputs, hasTest } = getOutputs(\n viteConfig?.config,\n projectRoot\n );\n\n const namedInputs = getNamedInputs(projectRoot, context);\n\n const targets: Record<string, TargetConfiguration> = {};\n\n // If file is not vitest.config, create targets for build, serve, preview and serve-static\n if (!configFilePath.includes('vitest.config')) {\n targets[options.buildTargetName] = await buildTarget(\n options.buildTargetName,\n namedInputs,\n buildOutputs,\n projectRoot\n );\n\n targets[options.serveTargetName] = serveTarget(projectRoot);\n\n targets[options.previewTargetName] = previewTarget(projectRoot);\n\n targets[options.serveStaticTargetName] = serveStaticTarget(options) as {};\n }\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 return targets;\n}\n\nasync function buildTarget(\n buildTargetName: string,\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string\n) {\n return {\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 };\n}\n\nfunction serveTarget(projectRoot: string) {\n const targetConfig: TargetConfiguration = {\n command: `vite serve`,\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n };\n\n return targetConfig;\n}\n\nfunction previewTarget(projectRoot: string) {\n const targetConfig: TargetConfiguration = {\n command: `vite preview`,\n options: {\n cwd: joinPathFragments(projectRoot),\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 run`,\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 ],\n outputs,\n };\n}\n\nfunction serveStaticTarget(options: VitePluginOptions) {\n const targetConfig: TargetConfiguration = {\n executor: '@nx/web:file-server',\n options: {\n buildTarget: `${options.buildTargetName}`,\n },\n };\n\n return targetConfig;\n}\n\nfunction getOutputs(\n viteConfig: Record<string, any> | undefined,\n projectRoot: string\n): {\n buildOutputs: string[];\n testOutputs: string[];\n hasTest: boolean;\n} {\n const { build, test } = viteConfig;\n\n const buildOutputPath = normalizeOutputPath(\n build?.outDir,\n projectRoot,\n 'dist'\n );\n\n const reportsDirectoryPath = normalizeOutputPath(\n test?.coverage?.reportsDirectory,\n projectRoot,\n 'coverage'\n );\n\n return {\n buildOutputs: [buildOutputPath],\n testOutputs: [reportsDirectoryPath],\n hasTest: !!test,\n };\n}\n\nfunction normalizeOutputPath(\n outputPath: string | undefined,\n projectRoot: 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.previewTargetName ??= 'preview';\n options.testTargetName ??= 'test';\n options.serveStaticTargetName ??= 'serve-static';\n return options;\n}\n"],"names":["createDependencies","createNodes","cachePath","join","projectGraphCacheDirectory","targetsCache","existsSync","readTargetsCache","calculatedTargets","readJsonFile","writeTargetsToCache","targets","writeJsonFile","configFilePath","options","context","projectRoot","dirname","siblingFiles","readdirSync","workspaceRoot","includes","normalizeOptions","hash","calculateHashForCreateNodes","getLockFileName","detectPackageManager","buildViteTargets","projects","root","loadConfigFromFile","loadViteDynamicImport","viteConfig","command","mode","buildOutputs","testOutputs","hasTest","getOutputs","config","namedInputs","getNamedInputs","buildTargetName","buildTarget","serveTargetName","serveTarget","previewTargetName","previewTarget","serveStaticTargetName","serveStaticTarget","testTargetName","testTarget","outputs","cwd","joinPathFragments","cache","dependsOn","inputs","externalDependencies","targetConfig","executor","test","build","buildOutputPath","normalizeOutputPath","outDir","reportsDirectoryPath","coverage","reportsDirectory","outputPath","path","isAbsolute","relative","startsWith"],"mappings":"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"}
@@ -7,3 +7,4 @@ export declare function validateTypes(opts: {
7
7
  tsconfig: string;
8
8
  }): Promise<void>;
9
9
  export declare function createBuildableTsConfig(projectRoot: string, options: ViteBuildExecutorOptions | ViteDevServerExecutorOptions, context: ExecutorContext): void;
10
+ export declare function loadViteDynamicImport(): Promise<typeof import("vite")>;
@@ -11,6 +11,9 @@ _export(exports, {
11
11
  },
12
12
  createBuildableTsConfig: function() {
13
13
  return createBuildableTsConfig;
14
+ },
15
+ loadViteDynamicImport: function() {
16
+ return loadViteDynamicImport;
14
17
  }
15
18
  });
16
19
  const _js = require("@nx/js");
@@ -43,5 +46,8 @@ function createBuildableTsConfig(projectRoot, options, context) {
43
46
  process.env.NX_TSCONFIG_PATH = tmpTsConfigPath;
44
47
  }
45
48
  }
49
+ function loadViteDynamicImport() {
50
+ return Function('return import("vite")')();
51
+ }
46
52
 
47
53
  //# sourceMappingURL=executor-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/vite/src/utils/executor-utils.ts"],"sourcesContent":["import { printDiagnostics, runTypeCheck } from '@nx/js';\nimport { join } from 'path';\nimport { ViteBuildExecutorOptions } from '../executors/build/schema';\nimport { ExecutorContext } from '@nx/devkit';\nimport { ViteDevServerExecutorOptions } from '../executors/dev-server/schema';\nimport {\n calculateProjectBuildableDependencies,\n createTmpTsConfig,\n} from '@nx/js/src/utils/buildable-libs-utils';\nimport { getProjectTsConfigPath } from './options-utils';\n\nexport async function validateTypes(opts: {\n workspaceRoot: string;\n projectRoot: string;\n tsconfig: string;\n}): Promise<void> {\n const result = await runTypeCheck({\n workspaceRoot: opts.workspaceRoot,\n tsConfigPath: join(opts.workspaceRoot, opts.tsconfig),\n mode: 'noEmit',\n });\n\n await printDiagnostics(result.errors, result.warnings);\n\n if (result.errors.length > 0) {\n throw new Error('Found type errors. See above.');\n }\n}\n\nexport function createBuildableTsConfig(\n projectRoot: string,\n options: ViteBuildExecutorOptions | ViteDevServerExecutorOptions,\n context: ExecutorContext\n) {\n const tsConfig = getProjectTsConfigPath(projectRoot);\n options['buildLibsFromSource'] ??= true;\n\n if (!options['buildLibsFromSource']) {\n const { dependencies } = calculateProjectBuildableDependencies(\n context.taskGraph,\n context.projectGraph,\n context.root,\n context.projectName,\n // When using incremental building and the serve target is called\n // we need to get the deps for the 'build' target instead.\n context.targetName === 'serve' ? 'build' : context.targetName,\n context.configurationName\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 const tmpTsConfigPath = createTmpTsConfig(\n tsConfig,\n context.root,\n projectRoot,\n dependencies\n );\n process.env.NX_TSCONFIG_PATH = tmpTsConfigPath;\n }\n}\n"],"names":["validateTypes","createBuildableTsConfig","opts","result","runTypeCheck","workspaceRoot","tsConfigPath","join","tsconfig","mode","printDiagnostics","errors","warnings","length","Error","projectRoot","options","context","tsConfig","getProjectTsConfigPath","dependencies","calculateProjectBuildableDependencies","taskGraph","projectGraph","root","projectName","targetName","configurationName","tmpTsConfigPath","createTmpTsConfig","process","env","NX_TSCONFIG_PATH"],"mappings":";;;;;;;;IAWsBA,aAAa;eAAbA;;IAkBNC,uBAAuB;eAAvBA;;;oBA7B+B;sBAC1B;oCAOd;8BACgC;AAEhC,eAAeD,cAAcE,IAInC;IACC,MAAMC,SAAS,MAAMC,IAAAA,gBAAY,EAAC;QAChCC,eAAeH,KAAKG,aAAa;QACjCC,cAAcC,IAAAA,UAAI,EAACL,KAAKG,aAAa,EAAEH,KAAKM,QAAQ;QACpDC,MAAM;IACR;IAEA,MAAMC,IAAAA,oBAAgB,EAACP,OAAOQ,MAAM,EAAER,OAAOS,QAAQ;IAErD,IAAIT,OAAOQ,MAAM,CAACE,MAAM,GAAG,GAAG;QAC5B,MAAM,IAAIC,MAAM;IAClB;AACF;AAEO,SAASb,wBACdc,WAAmB,EACnBC,OAAgE,EAChEC,OAAwB;QAGxBD,UAAQ;IADR,MAAME,WAAWC,IAAAA,oCAAsB,EAACJ;;IACxCC,MAAAA,WAAAA,QAAO,CAAC,uBAAA,sBAAsB,gBAA9BA,QAAO,CAAC,qBAAsB,GAAK;IAEnC,IAAI,CAACA,OAAO,CAAC,sBAAsB,EAAE;QACnC,MAAM,EAAEI,YAAY,EAAE,GAAGC,IAAAA,yDAAqC,EAC5DJ,QAAQK,SAAS,EACjBL,QAAQM,YAAY,EACpBN,QAAQO,IAAI,EACZP,QAAQQ,WAAW,EACnB,iEAAiE;QACjE,0DAA0D;QAC1DR,QAAQS,UAAU,KAAK,UAAU,UAAUT,QAAQS,UAAU,EAC7DT,QAAQU,iBAAiB;QAE3B,sDAAsD;QACtD,qGAAqG;QACrG,MAAMC,kBAAkBC,IAAAA,qCAAiB,EACvCX,UACAD,QAAQO,IAAI,EACZT,aACAK;QAEFU,QAAQC,GAAG,CAACC,gBAAgB,GAAGJ;IACjC;AACF"}
1
+ {"version":3,"sources":["../../../../../packages/vite/src/utils/executor-utils.ts"],"sourcesContent":["import { printDiagnostics, runTypeCheck } from '@nx/js';\nimport { join } from 'path';\nimport { ViteBuildExecutorOptions } from '../executors/build/schema';\nimport { ExecutorContext } from '@nx/devkit';\nimport { ViteDevServerExecutorOptions } from '../executors/dev-server/schema';\nimport {\n calculateProjectBuildableDependencies,\n createTmpTsConfig,\n} from '@nx/js/src/utils/buildable-libs-utils';\nimport { getProjectTsConfigPath } from './options-utils';\n\nexport async function validateTypes(opts: {\n workspaceRoot: string;\n projectRoot: string;\n tsconfig: string;\n}): Promise<void> {\n const result = await runTypeCheck({\n workspaceRoot: opts.workspaceRoot,\n tsConfigPath: join(opts.workspaceRoot, opts.tsconfig),\n mode: 'noEmit',\n });\n\n await printDiagnostics(result.errors, result.warnings);\n\n if (result.errors.length > 0) {\n throw new Error('Found type errors. See above.');\n }\n}\n\nexport function createBuildableTsConfig(\n projectRoot: string,\n options: ViteBuildExecutorOptions | ViteDevServerExecutorOptions,\n context: ExecutorContext\n) {\n const tsConfig = getProjectTsConfigPath(projectRoot);\n options['buildLibsFromSource'] ??= true;\n\n if (!options['buildLibsFromSource']) {\n const { dependencies } = calculateProjectBuildableDependencies(\n context.taskGraph,\n context.projectGraph,\n context.root,\n context.projectName,\n // When using incremental building and the serve target is called\n // we need to get the deps for the 'build' target instead.\n context.targetName === 'serve' ? 'build' : context.targetName,\n context.configurationName\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 const tmpTsConfigPath = createTmpTsConfig(\n tsConfig,\n context.root,\n projectRoot,\n dependencies\n );\n process.env.NX_TSCONFIG_PATH = tmpTsConfigPath;\n }\n}\n\nexport function loadViteDynamicImport() {\n return Function('return import(\"vite\")')() as Promise<typeof import('vite')>;\n}\n"],"names":["validateTypes","createBuildableTsConfig","loadViteDynamicImport","opts","result","runTypeCheck","workspaceRoot","tsConfigPath","join","tsconfig","mode","printDiagnostics","errors","warnings","length","Error","projectRoot","options","context","tsConfig","getProjectTsConfigPath","dependencies","calculateProjectBuildableDependencies","taskGraph","projectGraph","root","projectName","targetName","configurationName","tmpTsConfigPath","createTmpTsConfig","process","env","NX_TSCONFIG_PATH","Function"],"mappings":";;;;;;;;IAWsBA,aAAa;eAAbA;;IAkBNC,uBAAuB;eAAvBA;;IA+BAC,qBAAqB;eAArBA;;;oBA5D+B;sBAC1B;oCAOd;8BACgC;AAEhC,eAAeF,cAAcG,IAInC;IACC,MAAMC,SAAS,MAAMC,IAAAA,gBAAY,EAAC;QAChCC,eAAeH,KAAKG,aAAa;QACjCC,cAAcC,IAAAA,UAAI,EAACL,KAAKG,aAAa,EAAEH,KAAKM,QAAQ;QACpDC,MAAM;IACR;IAEA,MAAMC,IAAAA,oBAAgB,EAACP,OAAOQ,MAAM,EAAER,OAAOS,QAAQ;IAErD,IAAIT,OAAOQ,MAAM,CAACE,MAAM,GAAG,GAAG;QAC5B,MAAM,IAAIC,MAAM;IAClB;AACF;AAEO,SAASd,wBACde,WAAmB,EACnBC,OAAgE,EAChEC,OAAwB;QAGxBD,UAAQ;IADR,MAAME,WAAWC,IAAAA,oCAAsB,EAACJ;;IACxCC,MAAAA,WAAAA,QAAO,CAAC,uBAAA,sBAAsB,gBAA9BA,QAAO,CAAC,qBAAsB,GAAK;IAEnC,IAAI,CAACA,OAAO,CAAC,sBAAsB,EAAE;QACnC,MAAM,EAAEI,YAAY,EAAE,GAAGC,IAAAA,yDAAqC,EAC5DJ,QAAQK,SAAS,EACjBL,QAAQM,YAAY,EACpBN,QAAQO,IAAI,EACZP,QAAQQ,WAAW,EACnB,iEAAiE;QACjE,0DAA0D;QAC1DR,QAAQS,UAAU,KAAK,UAAU,UAAUT,QAAQS,UAAU,EAC7DT,QAAQU,iBAAiB;QAE3B,sDAAsD;QACtD,qGAAqG;QACrG,MAAMC,kBAAkBC,IAAAA,qCAAiB,EACvCX,UACAD,QAAQO,IAAI,EACZT,aACAK;QAEFU,QAAQC,GAAG,CAACC,gBAAgB,GAAGJ;IACjC;AACF;AAEO,SAAS3B;IACd,OAAOgC,SAAS;AAClB"}
@@ -187,12 +187,10 @@ function addOrChangeBuildTarget(tree, options, target) {
187
187
  var _targets;
188
188
  (_targets = (_project = project).targets) != null ? _targets : _project.targets = {};
189
189
  if (project.targets[target]) {
190
- var _project_targets_target_options;
191
- buildOptions.fileReplacements = (_project_targets_target_options = project.targets[target].options) == null ? void 0 : _project_targets_target_options.fileReplacements;
192
190
  if (project.targets[target].executor === '@nxext/vite:build') {
193
- var _project_targets_target_options1, _project_targets_target_options2;
194
- buildOptions['base'] = (_project_targets_target_options1 = project.targets[target].options) == null ? void 0 : _project_targets_target_options1.baseHref;
195
- buildOptions['sourcemap'] = (_project_targets_target_options2 = project.targets[target].options) == null ? void 0 : _project_targets_target_options2.sourcemaps;
191
+ var _project_targets_target_options, _project_targets_target_options1;
192
+ buildOptions['base'] = (_project_targets_target_options = project.targets[target].options) == null ? void 0 : _project_targets_target_options.baseHref;
193
+ buildOptions['sourcemap'] = (_project_targets_target_options1 = project.targets[target].options) == null ? void 0 : _project_targets_target_options1.sourcemaps;
196
194
  }
197
195
  project.targets[target].options = _extends._({}, buildOptions);
198
196
  project.targets[target].executor = '@nx/vite:build';
@@ -392,12 +390,13 @@ function moveAndEditIndexHtml(tree, options, buildTarget) {
392
390
  function createOrEditViteConfig(tree, options, onlyVitest, projectAlreadyHasViteTargets, vitestFileName) {
393
391
  const { root: projectRoot } = (0, _devkit.readProjectConfiguration)(tree, options.project);
394
392
  const viteConfigPath = vitestFileName ? `${projectRoot}/vitest.config.ts` : `${projectRoot}/vite.config.ts`;
393
+ const buildOutDir = projectRoot === '.' ? `./dist/${options.project}` : `${(0, _devkit.offsetFromRoot)(projectRoot)}dist/${projectRoot}`;
395
394
  var _options_rollupOptionsExternal;
396
395
  const buildOption = onlyVitest ? '' : options.includeLib ? `
397
396
  // Configuration for building your library.
398
397
  // See: https://vitejs.dev/guide/build.html#library-mode
399
398
  build: {
400
- outDir: '${(0, _devkit.offsetFromRoot)(projectRoot)}dist/${projectRoot}',
399
+ outDir: '${buildOutDir}',
401
400
  reportCompressedSize: true,
402
401
  commonjsOptions: {
403
402
  transformMixedEsModules: true,
@@ -417,7 +416,7 @@ function createOrEditViteConfig(tree, options, onlyVitest, projectAlreadyHasVite
417
416
  },
418
417
  },` : `
419
418
  build: {
420
- outDir: '${(0, _devkit.offsetFromRoot)(projectRoot)}dist/${projectRoot}',
419
+ outDir: '${buildOutDir}',
421
420
  reportCompressedSize: true,
422
421
  commonjsOptions: {
423
422
  transformMixedEsModules: true,
@@ -438,6 +437,7 @@ function createOrEditViteConfig(tree, options, onlyVitest, projectAlreadyHasVite
438
437
  if (!onlyVitest && options.includeLib) {
439
438
  plugins.push(`dts({ entryRoot: 'src', tsConfigFilePath: path.join(__dirname, 'tsconfig.lib.json'), skipDiagnostics: true })`);
440
439
  }
440
+ const reportsDirectory = projectRoot === '.' ? `./coverage/${options.project}` : `${(0, _devkit.offsetFromRoot)(projectRoot)}coverage/${projectRoot}`;
441
441
  var _options_testEnvironment;
442
442
  const testOption = options.includeVitest ? `test: {
443
443
  globals: true,
@@ -449,7 +449,7 @@ function createOrEditViteConfig(tree, options, onlyVitest, projectAlreadyHasVite
449
449
  ${options.inSourceTests ? `includeSource: ['src/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],` : ''}
450
450
  reporters: ['default'],
451
451
  coverage: {
452
- reportsDirectory: '${(0, _devkit.offsetFromRoot)(projectRoot)}coverage/${projectRoot}',
452
+ reportsDirectory: '${reportsDirectory}',
453
453
  provider: ${options.coverageProvider ? `'${options.coverageProvider}'` : `'v8'`},
454
454
  }
455
455
  },` : '';
@@ -473,7 +473,7 @@ function createOrEditViteConfig(tree, options, onlyVitest, projectAlreadyHasVite
473
473
  // },`;
474
474
  const cacheDir = `cacheDir: '${(0, _devkit.offsetFromRoot)(projectRoot)}node_modules/.vite/${projectRoot}',`;
475
475
  if (tree.exists(viteConfigPath)) {
476
- handleViteConfigFileExists(tree, viteConfigPath, options, buildOption, imports, plugins, testOption, cacheDir, (0, _devkit.offsetFromRoot)(projectRoot), projectRoot, projectAlreadyHasViteTargets);
476
+ handleViteConfigFileExists(tree, viteConfigPath, options, buildOption, buildOutDir, imports, plugins, testOption, reportsDirectory, cacheDir, (0, _devkit.offsetFromRoot)(projectRoot), projectAlreadyHasViteTargets);
477
477
  return;
478
478
  }
479
479
  viteConfigContent = `
@@ -573,7 +573,7 @@ async function handleUnknownExecutors(projectName) {
573
573
  `);
574
574
  }
575
575
  }
576
- function handleViteConfigFileExists(tree, viteConfigPath, options, buildOption, imports, plugins, testOption, cacheDir, offsetFromRoot, projectRoot, projectAlreadyHasViteTargets) {
576
+ function handleViteConfigFileExists(tree, viteConfigPath, options, buildOption, buildOutDir, imports, plugins, testOption, reportsDirectory, cacheDir, offsetFromRoot, projectAlreadyHasViteTargets) {
577
577
  if ((projectAlreadyHasViteTargets == null ? void 0 : projectAlreadyHasViteTargets.build) && (projectAlreadyHasViteTargets == null ? void 0 : projectAlreadyHasViteTargets.test)) {
578
578
  return;
579
579
  }
@@ -594,13 +594,13 @@ function handleViteConfigFileExists(tree, viteConfigPath, options, buildOption,
594
594
  rollupOptions: {
595
595
  external: (_options_rollupOptionsExternal = options.rollupOptionsExternal) != null ? _options_rollupOptionsExternal : []
596
596
  },
597
- outDir: `${offsetFromRoot}dist/${projectRoot}`,
597
+ outDir: buildOutDir,
598
598
  reportCompressedSize: true,
599
599
  commonjsOptions: {
600
600
  transformMixedEsModules: true
601
601
  }
602
602
  } : {
603
- outDir: `${offsetFromRoot}dist/${projectRoot}`,
603
+ outDir: buildOutDir,
604
604
  reportCompressedSize: true,
605
605
  commonjsOptions: {
606
606
  transformMixedEsModules: true
@@ -620,7 +620,7 @@ function handleViteConfigFileExists(tree, viteConfigPath, options, buildOption,
620
620
  'default'
621
621
  ],
622
622
  coverage: {
623
- reportsDirectory: `${offsetFromRoot}coverage/${projectRoot}`,
623
+ reportsDirectory: reportsDirectory,
624
624
  provider: `${(_options_coverageProvider = options.coverageProvider) != null ? _options_coverageProvider : 'v8'}`
625
625
  }
626
626
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/vite/src/utils/generator-utils.ts"],"sourcesContent":["import {\n joinPathFragments,\n logger,\n offsetFromRoot,\n readJson,\n readProjectConfiguration,\n TargetConfiguration,\n Tree,\n updateProjectConfiguration,\n writeJson,\n} from '@nx/devkit';\nimport { ViteBuildExecutorOptions } from '../executors/build/schema';\nimport { ViteDevServerExecutorOptions } from '../executors/dev-server/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';\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 findExistingTargetsInProject(\n targets: {\n [targetName: string]: TargetConfiguration;\n },\n userProvidedTargets?: UserProvidedTargetName\n): {\n validFoundTargetName: ValidFoundTargetName;\n projectContainsUnsupportedExecutor: boolean;\n userProvidedTargetIsUnsupported: TargetFlags;\n alreadyHasNxViteTargets: TargetFlags;\n} {\n const output: ReturnType<typeof findExistingTargetsInProject> = {\n validFoundTargetName: {},\n projectContainsUnsupportedExecutor: false,\n userProvidedTargetIsUnsupported: {},\n alreadyHasNxViteTargets: {},\n };\n\n const supportedExecutors = {\n build: [\n '@nxext/vite:build',\n '@nx/js:babel',\n '@nx/js:swc',\n '@nx/webpack:webpack',\n '@nx/rollup:rollup',\n '@nrwl/js:babel',\n '@nrwl/js:swc',\n '@nrwl/webpack:webpack',\n '@nrwl/rollup:rollup',\n '@nrwl/web:rollup',\n ],\n serve: [\n '@nxext/vite:dev',\n '@nx/webpack:dev-server',\n '@nrwl/webpack:dev-server',\n ],\n test: ['@nx/jest:jest', '@nrwl/jest:jest', '@nxext/vitest:vitest'],\n };\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/next:server',\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/next:server',\n '@nrwl/js:tsc',\n '@angular-devkit/build-angular:browser',\n '@angular-devkit/build-angular:dev-server',\n ];\n\n // First, we check if the user has provided a target\n // If they have, we check if the executor the target is using is supported\n // If it's not supported, then we set the unsupported flag to true for that target\n\n function checkUserProvidedTarget(target: Target) {\n if (userProvidedTargets?.[target]) {\n if (\n supportedExecutors[target].includes(\n targets[userProvidedTargets[target]]?.executor\n )\n ) {\n output.validFoundTargetName[target] = userProvidedTargets[target];\n } else {\n output.userProvidedTargetIsUnsupported[target] = true;\n }\n }\n }\n\n checkUserProvidedTarget('build');\n checkUserProvidedTarget('serve');\n checkUserProvidedTarget('test');\n\n // Returns early when we have a build, serve, and test targets.\n if (\n output.validFoundTargetName.build &&\n output.validFoundTargetName.serve &&\n output.validFoundTargetName.test\n ) {\n return output;\n }\n\n // We try to find the targets that are using the supported executors\n // for build, serve and test, since these are the ones we will be converting\n for (const target in targets) {\n const executorName = targets[target].executor;\n\n const hasViteTargets = output.alreadyHasNxViteTargets;\n hasViteTargets.build ||=\n executorName === '@nx/vite:build' || executorName === '@nrwl/vite:build';\n hasViteTargets.serve ||=\n executorName === '@nx/vite:dev-server' ||\n executorName === '@nrwl/vite:dev-server';\n hasViteTargets.test ||=\n executorName === '@nx/vite:test' || executorName === '@nrwl/vite:test';\n hasViteTargets.preview ||=\n executorName === '@nx/vite:preview-server' ||\n executorName === '@nrwl/vite:preview-server';\n\n const foundTargets = output.validFoundTargetName;\n if (\n !foundTargets.build &&\n supportedExecutors.build.includes(executorName)\n ) {\n foundTargets.build = target;\n }\n if (\n !foundTargets.serve &&\n supportedExecutors.serve.includes(executorName)\n ) {\n foundTargets.serve = target;\n }\n if (!foundTargets.test && supportedExecutors.test.includes(executorName)) {\n foundTargets.test = target;\n }\n\n output.projectContainsUnsupportedExecutor ||=\n unsupportedExecutors.includes(executorName);\n }\n\n return output;\n}\n\nexport function addOrChangeTestTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n const project = readProjectConfiguration(tree, options.project);\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 project.targets[target].executor = '@nx/vite:test';\n delete project.targets[target].options?.jestConfig;\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 addOrChangeBuildTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n const buildOptions: ViteBuildExecutorOptions = {\n outputPath: joinPathFragments(\n 'dist',\n project.root != '.' ? project.root : options.project\n ),\n };\n\n project.targets ??= {};\n\n if (project.targets[target]) {\n buildOptions.fileReplacements =\n project.targets[target].options?.fileReplacements;\n\n if (project.targets[target].executor === '@nxext/vite:build') {\n buildOptions['base'] = project.targets[target].options?.baseHref;\n buildOptions['sourcemap'] = project.targets[target].options?.sourcemaps;\n }\n project.targets[target].options = { ...buildOptions };\n project.targets[target].executor = '@nx/vite:build';\n } else {\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\n updateProjectConfiguration(tree, options.project, project);\n}\n\nexport function addOrChangeServeTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n project.targets ??= {};\n\n if (project.targets[target]) {\n const serveTarget = project.targets[target];\n const serveOptions: ViteDevServerExecutorOptions = {\n buildTarget: `${options.project}:build`,\n };\n if (serveTarget.executor === '@nxext/vite:dev') {\n serveOptions.proxyConfig = project.targets[target].options.proxyConfig;\n }\n serveTarget.executor = '@nx/vite:dev-server';\n serveTarget.options = serveOptions;\n } else {\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\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 * @param previewTarget The preview target to create.\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 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 const config = readJson(tree, `${projectConfig.root}/tsconfig.json`);\n\n const commonCompilerOptions = {\n target: 'ESNext',\n useDefineForClassFields: true,\n module: 'ESNext',\n strict: true,\n moduleResolution: 'Node',\n resolveJsonModule: true,\n isolatedModules: true,\n types: ['vite/client'],\n noEmit: true,\n };\n\n switch (options.uiFramework) {\n case 'react':\n config.compilerOptions = {\n ...commonCompilerOptions,\n lib: ['DOM', 'DOM.Iterable', 'ESNext'],\n allowJs: false,\n esModuleInterop: false,\n skipLibCheck: true,\n allowSyntheticDefaultImports: true,\n forceConsistentCasingInFileNames: true,\n jsx: 'react-jsx',\n };\n config.include = [...config.include, 'src'];\n break;\n case 'none':\n config.compilerOptions = {\n ...commonCompilerOptions,\n lib: ['ESNext', 'DOM'],\n skipLibCheck: true,\n esModuleInterop: true,\n strict: true,\n noUnusedLocals: true,\n noUnusedParameters: true,\n noImplicitReturns: true,\n };\n config.include = [...config.include, 'src'];\n break;\n default:\n break;\n }\n\n writeJson(tree, `${projectConfig.root}/tsconfig.json`, 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 buildTarget: string\n) {\n const projectConfig = readProjectConfiguration(tree, options.project);\n\n let indexHtmlPath =\n projectConfig.targets?.[buildTarget]?.options?.index ??\n `${projectConfig.root}/src/index.html`;\n let mainPath =\n projectConfig.targets?.[buildTarget]?.options?.main ??\n `${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}\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 viteConfigPath = vitestFileName\n ? `${projectRoot}/vitest.config.ts`\n : `${projectRoot}/vite.config.ts`;\n\n const buildOption = onlyVitest\n ? ''\n : options.includeLib\n ? `\n // Configuration for building your library.\n // See: https://vitejs.dev/guide/build.html#library-mode\n build: {\n outDir: '${offsetFromRoot(projectRoot)}dist/${projectRoot}',\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', 'cjs']\n },\n rollupOptions: {\n // External packages that should not be bundled into your library.\n external: [${options.rollupOptionsExternal ?? ''}]\n },\n },`\n : `\n build: {\n outDir: '${offsetFromRoot(projectRoot)}dist/${projectRoot}',\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n },\n `;\n\n const imports: string[] = options.imports ? options.imports : [];\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 let viteConfigContent = '';\n\n const plugins = options.plugins\n ? [...options.plugins, `nxViteTsPaths()`]\n : [`nxViteTsPaths()`];\n\n if (!onlyVitest && options.includeLib) {\n plugins.push(\n `dts({ entryRoot: 'src', tsConfigFilePath: path.join(__dirname, 'tsconfig.lib.json'), skipDiagnostics: true })`\n );\n }\n\n const testOption = options.includeVitest\n ? `test: {\n globals: true,\n cache: {\n dir: '${offsetFromRoot(projectRoot)}node_modules/.vitest'\n },\n environment: '${options.testEnvironment ?? 'jsdom'}',\n include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\n ${\n options.inSourceTests\n ? `includeSource: ['src/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],`\n : ''\n }\n reporters: ['default'],\n coverage: {\n reportsDirectory: '${offsetFromRoot(projectRoot)}coverage/${projectRoot}',\n provider: ${\n options.coverageProvider ? `'${options.coverageProvider}'` : `'v8'`\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 : `\n server:{\n port: 4200,\n host: 'localhost',\n },`;\n\n const previewServerOption = onlyVitest\n ? ''\n : options.includeLib\n ? ''\n : `\n preview:{\n port: 4300,\n host: 'localhost',\n },`;\n\n const workerOption = `\n // Uncomment this if you are using workers. \n // worker: {\n // plugins: [ nxViteTsPaths() ],\n // },`;\n\n const cacheDir = `cacheDir: '${offsetFromRoot(\n projectRoot\n )}node_modules/.vite/${projectRoot}',`;\n\n if (tree.exists(viteConfigPath)) {\n handleViteConfigFileExists(\n tree,\n viteConfigPath,\n options,\n buildOption,\n imports,\n plugins,\n testOption,\n cacheDir,\n offsetFromRoot(projectRoot),\n projectRoot,\n projectAlreadyHasViteTargets\n );\n return;\n }\n\n viteConfigContent = `\n /// <reference types='vitest' />\n import { defineConfig } from 'vite';\n ${imports.join(';\\n')}${imports.length ? ';' : ''}\n import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\n \n export default defineConfig({\n root: __dirname,\n ${cacheDir}\n ${devServerOption}\n ${previewServerOption}\n \n plugins: [${plugins.join(',\\n')}],\n ${workerOption}\n ${buildOption}\n ${defineOption}\n ${testOption}\n });`;\n\n tree.write(viteConfigPath, viteConfigContent);\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 handleUnknownExecutors(projectName: string) {\n logger.warn(\n `\n We could not find any targets in project ${projectName} that use executors which \n can be converted to the @nx/vite executors.\n\n This either means that your project may not have a target \n for building, serving, or testing at all, or that your targets are \n using executors that are not known to Nx.\n \n If you still want to convert your project to use the @nx/vite executors,\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 the @nx/vite executors?`,\n initial: true,\n });\n const shouldConvert = await prompt.run();\n if (!shouldConvert) {\n throw new Error(`\n Nx could not verify that the executors you are using can be converted to the @nx/vite executors.\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 imports: string[],\n plugins: string[],\n testOption: string,\n cacheDir: string,\n offsetFromRoot: string,\n projectRoot: 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', 'cjs'],\n },\n rollupOptions: {\n external: options.rollupOptionsExternal ?? [],\n },\n outDir: `${offsetFromRoot}dist/${projectRoot}`,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n }\n : {\n outDir: `${offsetFromRoot}dist/${projectRoot}`,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n };\n\n const testOptionObject = {\n globals: true,\n cache: {\n dir: `${offsetFromRoot}node_modules/.vitest`,\n },\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: `${offsetFromRoot}coverage/${projectRoot}`,\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"],"names":["findExistingTargetsInProject","addOrChangeTestTarget","addOrChangeBuildTarget","addOrChangeServeTarget","addPreviewTarget","editTsConfig","deleteWebpackConfig","moveAndEditIndexHtml","createOrEditViteConfig","normalizeViteConfigFilePathWithTree","getViteConfigPathForProject","handleUnsupportedUserProvidedTargets","handleUnknownExecutors","targets","userProvidedTargets","output","validFoundTargetName","projectContainsUnsupportedExecutor","userProvidedTargetIsUnsupported","alreadyHasNxViteTargets","supportedExecutors","build","serve","test","unsupportedExecutors","checkUserProvidedTarget","target","includes","executor","hasViteTargets","executorName","preview","foundTargets","tree","options","project","readProjectConfiguration","reportsDirectory","joinPathFragments","offsetFromRoot","root","testOptions","jestConfig","outputs","updateProjectConfiguration","buildOptions","outputPath","fileReplacements","baseHref","sourcemaps","defaultConfiguration","configurations","development","mode","production","serveTarget","serveOptions","buildTarget","proxyConfig","hmr","previewOptions","https","open","projectConfig","config","readJson","commonCompilerOptions","useDefineForClassFields","module","strict","moduleResolution","resolveJsonModule","isolatedModules","types","noEmit","uiFramework","compilerOptions","lib","allowJs","esModuleInterop","skipLibCheck","allowSyntheticDefaultImports","forceConsistentCasingInFileNames","jsx","include","noUnusedLocals","noUnusedParameters","noImplicitReturns","writeJson","projectRoot","webpackConfigFilePath","webpackConfigPath","exists","delete","indexHtmlPath","index","mainPath","main","replace","indexHtmlContent","read","write","onlyVitest","projectAlreadyHasViteTargets","vitestFileName","viteConfigPath","buildOption","includeLib","rollupOptionsExternal","imports","push","viteConfigContent","plugins","testOption","includeVitest","testEnvironment","inSourceTests","coverageProvider","defineOption","devServerOption","previewServerOption","workerOption","cacheDir","handleViteConfigFileExists","join","length","configFile","undefined","projectName","Object","values","find","userProvidedTargetName","handleUnsupportedUserProvidedTargetsErrors","logger","warn","Confirm","require","prompt","name","message","initial","shouldConvert","run","Error","process","env","NX_VERBOSE_LOGGING","info","buildOptionObject","entry","fileName","formats","rollupOptions","external","outDir","reportCompressedSize","commonjsOptions","transformMixedEsModules","testOptionObject","globals","cache","dir","environment","reporters","coverage","provider","changed","ensureViteConfigIsCorrect"],"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 readProjectConfiguration,\n TargetConfiguration,\n Tree,\n updateProjectConfiguration,\n writeJson,\n} from '@nx/devkit';\nimport { ViteBuildExecutorOptions } from '../executors/build/schema';\nimport { ViteDevServerExecutorOptions } from '../executors/dev-server/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';\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 findExistingTargetsInProject(\n targets: {\n [targetName: string]: TargetConfiguration;\n },\n userProvidedTargets?: UserProvidedTargetName\n): {\n validFoundTargetName: ValidFoundTargetName;\n projectContainsUnsupportedExecutor: boolean;\n userProvidedTargetIsUnsupported: TargetFlags;\n alreadyHasNxViteTargets: TargetFlags;\n} {\n const output: ReturnType<typeof findExistingTargetsInProject> = {\n validFoundTargetName: {},\n projectContainsUnsupportedExecutor: false,\n userProvidedTargetIsUnsupported: {},\n alreadyHasNxViteTargets: {},\n };\n\n const supportedExecutors = {\n build: [\n '@nxext/vite:build',\n '@nx/js:babel',\n '@nx/js:swc',\n '@nx/webpack:webpack',\n '@nx/rollup:rollup',\n '@nrwl/js:babel',\n '@nrwl/js:swc',\n '@nrwl/webpack:webpack',\n '@nrwl/rollup:rollup',\n '@nrwl/web:rollup',\n ],\n serve: [\n '@nxext/vite:dev',\n '@nx/webpack:dev-server',\n '@nrwl/webpack:dev-server',\n ],\n test: ['@nx/jest:jest', '@nrwl/jest:jest', '@nxext/vitest:vitest'],\n };\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/next:server',\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/next:server',\n '@nrwl/js:tsc',\n '@angular-devkit/build-angular:browser',\n '@angular-devkit/build-angular:dev-server',\n ];\n\n // First, we check if the user has provided a target\n // If they have, we check if the executor the target is using is supported\n // If it's not supported, then we set the unsupported flag to true for that target\n\n function checkUserProvidedTarget(target: Target) {\n if (userProvidedTargets?.[target]) {\n if (\n supportedExecutors[target].includes(\n targets[userProvidedTargets[target]]?.executor\n )\n ) {\n output.validFoundTargetName[target] = userProvidedTargets[target];\n } else {\n output.userProvidedTargetIsUnsupported[target] = true;\n }\n }\n }\n\n checkUserProvidedTarget('build');\n checkUserProvidedTarget('serve');\n checkUserProvidedTarget('test');\n\n // Returns early when we have a build, serve, and test targets.\n if (\n output.validFoundTargetName.build &&\n output.validFoundTargetName.serve &&\n output.validFoundTargetName.test\n ) {\n return output;\n }\n\n // We try to find the targets that are using the supported executors\n // for build, serve and test, since these are the ones we will be converting\n for (const target in targets) {\n const executorName = targets[target].executor;\n\n const hasViteTargets = output.alreadyHasNxViteTargets;\n hasViteTargets.build ||=\n executorName === '@nx/vite:build' || executorName === '@nrwl/vite:build';\n hasViteTargets.serve ||=\n executorName === '@nx/vite:dev-server' ||\n executorName === '@nrwl/vite:dev-server';\n hasViteTargets.test ||=\n executorName === '@nx/vite:test' || executorName === '@nrwl/vite:test';\n hasViteTargets.preview ||=\n executorName === '@nx/vite:preview-server' ||\n executorName === '@nrwl/vite:preview-server';\n\n const foundTargets = output.validFoundTargetName;\n if (\n !foundTargets.build &&\n supportedExecutors.build.includes(executorName)\n ) {\n foundTargets.build = target;\n }\n if (\n !foundTargets.serve &&\n supportedExecutors.serve.includes(executorName)\n ) {\n foundTargets.serve = target;\n }\n if (!foundTargets.test && supportedExecutors.test.includes(executorName)) {\n foundTargets.test = target;\n }\n\n output.projectContainsUnsupportedExecutor ||=\n unsupportedExecutors.includes(executorName);\n }\n\n return output;\n}\n\nexport function addOrChangeTestTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n const project = readProjectConfiguration(tree, options.project);\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 project.targets[target].executor = '@nx/vite:test';\n delete project.targets[target].options?.jestConfig;\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 addOrChangeBuildTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n const buildOptions: ViteBuildExecutorOptions = {\n outputPath: joinPathFragments(\n 'dist',\n project.root != '.' ? project.root : options.project\n ),\n };\n\n project.targets ??= {};\n\n if (project.targets[target]) {\n if (project.targets[target].executor === '@nxext/vite:build') {\n buildOptions['base'] = project.targets[target].options?.baseHref;\n buildOptions['sourcemap'] = project.targets[target].options?.sourcemaps;\n }\n project.targets[target].options = { ...buildOptions };\n project.targets[target].executor = '@nx/vite:build';\n } else {\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\n updateProjectConfiguration(tree, options.project, project);\n}\n\nexport function addOrChangeServeTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n project.targets ??= {};\n\n if (project.targets[target]) {\n const serveTarget = project.targets[target];\n const serveOptions: ViteDevServerExecutorOptions = {\n buildTarget: `${options.project}:build`,\n };\n if (serveTarget.executor === '@nxext/vite:dev') {\n serveOptions.proxyConfig = project.targets[target].options.proxyConfig;\n }\n serveTarget.executor = '@nx/vite:dev-server';\n serveTarget.options = serveOptions;\n } else {\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\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 * @param previewTarget The preview target to create.\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 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 const config = readJson(tree, `${projectConfig.root}/tsconfig.json`);\n\n const commonCompilerOptions = {\n target: 'ESNext',\n useDefineForClassFields: true,\n module: 'ESNext',\n strict: true,\n moduleResolution: 'Node',\n resolveJsonModule: true,\n isolatedModules: true,\n types: ['vite/client'],\n noEmit: true,\n };\n\n switch (options.uiFramework) {\n case 'react':\n config.compilerOptions = {\n ...commonCompilerOptions,\n lib: ['DOM', 'DOM.Iterable', 'ESNext'],\n allowJs: false,\n esModuleInterop: false,\n skipLibCheck: true,\n allowSyntheticDefaultImports: true,\n forceConsistentCasingInFileNames: true,\n jsx: 'react-jsx',\n };\n config.include = [...config.include, 'src'];\n break;\n case 'none':\n config.compilerOptions = {\n ...commonCompilerOptions,\n lib: ['ESNext', 'DOM'],\n skipLibCheck: true,\n esModuleInterop: true,\n strict: true,\n noUnusedLocals: true,\n noUnusedParameters: true,\n noImplicitReturns: true,\n };\n config.include = [...config.include, 'src'];\n break;\n default:\n break;\n }\n\n writeJson(tree, `${projectConfig.root}/tsconfig.json`, 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 buildTarget: string\n) {\n const projectConfig = readProjectConfiguration(tree, options.project);\n\n let indexHtmlPath =\n projectConfig.targets?.[buildTarget]?.options?.index ??\n `${projectConfig.root}/src/index.html`;\n let mainPath =\n projectConfig.targets?.[buildTarget]?.options?.main ??\n `${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}\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 viteConfigPath = vitestFileName\n ? `${projectRoot}/vitest.config.ts`\n : `${projectRoot}/vite.config.ts`;\n\n const buildOutDir =\n projectRoot === '.'\n ? `./dist/${options.project}`\n : `${offsetFromRoot(projectRoot)}dist/${projectRoot}`;\n\n const buildOption = onlyVitest\n ? ''\n : options.includeLib\n ? `\n // Configuration for building your library.\n // See: https://vitejs.dev/guide/build.html#library-mode\n build: {\n outDir: '${buildOutDir}',\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', 'cjs']\n },\n rollupOptions: {\n // External packages that should not be bundled into your library.\n external: [${options.rollupOptionsExternal ?? ''}]\n },\n },`\n : `\n build: {\n outDir: '${buildOutDir}',\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n },\n `;\n\n const imports: string[] = options.imports ? options.imports : [];\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 let viteConfigContent = '';\n\n const plugins = options.plugins\n ? [...options.plugins, `nxViteTsPaths()`]\n : [`nxViteTsPaths()`];\n\n if (!onlyVitest && options.includeLib) {\n plugins.push(\n `dts({ entryRoot: 'src', tsConfigFilePath: path.join(__dirname, 'tsconfig.lib.json'), skipDiagnostics: true })`\n );\n }\n\n const reportsDirectory =\n projectRoot === '.'\n ? `./coverage/${options.project}`\n : `${offsetFromRoot(projectRoot)}coverage/${projectRoot}`;\n\n const testOption = options.includeVitest\n ? `test: {\n globals: true,\n cache: {\n dir: '${offsetFromRoot(projectRoot)}node_modules/.vitest'\n },\n environment: '${options.testEnvironment ?? 'jsdom'}',\n include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\n ${\n options.inSourceTests\n ? `includeSource: ['src/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],`\n : ''\n }\n reporters: ['default'],\n coverage: {\n reportsDirectory: '${reportsDirectory}',\n provider: ${\n options.coverageProvider ? `'${options.coverageProvider}'` : `'v8'`\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 : `\n server:{\n port: 4200,\n host: 'localhost',\n },`;\n\n const previewServerOption = onlyVitest\n ? ''\n : options.includeLib\n ? ''\n : `\n preview:{\n port: 4300,\n host: 'localhost',\n },`;\n\n const workerOption = `\n // Uncomment this if you are using workers. \n // worker: {\n // plugins: [ nxViteTsPaths() ],\n // },`;\n\n const cacheDir = `cacheDir: '${offsetFromRoot(\n projectRoot\n )}node_modules/.vite/${projectRoot}',`;\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 offsetFromRoot(projectRoot),\n projectAlreadyHasViteTargets\n );\n return;\n }\n\n viteConfigContent = `\n /// <reference types='vitest' />\n import { defineConfig } from 'vite';\n ${imports.join(';\\n')}${imports.length ? ';' : ''}\n import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\n \n export default defineConfig({\n root: __dirname,\n ${cacheDir}\n ${devServerOption}\n ${previewServerOption}\n \n plugins: [${plugins.join(',\\n')}],\n ${workerOption}\n ${buildOption}\n ${defineOption}\n ${testOption}\n });`;\n\n tree.write(viteConfigPath, viteConfigContent);\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 handleUnknownExecutors(projectName: string) {\n logger.warn(\n `\n We could not find any targets in project ${projectName} that use executors which \n can be converted to the @nx/vite executors.\n\n This either means that your project may not have a target \n for building, serving, or testing at all, or that your targets are \n using executors that are not known to Nx.\n \n If you still want to convert your project to use the @nx/vite executors,\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 the @nx/vite executors?`,\n initial: true,\n });\n const shouldConvert = await prompt.run();\n if (!shouldConvert) {\n throw new Error(`\n Nx could not verify that the executors you are using can be converted to the @nx/vite executors.\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 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', 'cjs'],\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 cache: {\n dir: `${offsetFromRoot}node_modules/.vitest`,\n },\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"],"names":["findExistingTargetsInProject","addOrChangeTestTarget","addOrChangeBuildTarget","addOrChangeServeTarget","addPreviewTarget","editTsConfig","deleteWebpackConfig","moveAndEditIndexHtml","createOrEditViteConfig","normalizeViteConfigFilePathWithTree","getViteConfigPathForProject","handleUnsupportedUserProvidedTargets","handleUnknownExecutors","targets","userProvidedTargets","output","validFoundTargetName","projectContainsUnsupportedExecutor","userProvidedTargetIsUnsupported","alreadyHasNxViteTargets","supportedExecutors","build","serve","test","unsupportedExecutors","checkUserProvidedTarget","target","includes","executor","hasViteTargets","executorName","preview","foundTargets","tree","options","project","readProjectConfiguration","reportsDirectory","joinPathFragments","offsetFromRoot","root","testOptions","jestConfig","outputs","updateProjectConfiguration","buildOptions","outputPath","baseHref","sourcemaps","defaultConfiguration","configurations","development","mode","production","serveTarget","serveOptions","buildTarget","proxyConfig","hmr","previewOptions","https","open","projectConfig","config","readJson","commonCompilerOptions","useDefineForClassFields","module","strict","moduleResolution","resolveJsonModule","isolatedModules","types","noEmit","uiFramework","compilerOptions","lib","allowJs","esModuleInterop","skipLibCheck","allowSyntheticDefaultImports","forceConsistentCasingInFileNames","jsx","include","noUnusedLocals","noUnusedParameters","noImplicitReturns","writeJson","projectRoot","webpackConfigFilePath","webpackConfigPath","exists","delete","indexHtmlPath","index","mainPath","main","replace","indexHtmlContent","read","write","onlyVitest","projectAlreadyHasViteTargets","vitestFileName","viteConfigPath","buildOutDir","buildOption","includeLib","rollupOptionsExternal","imports","push","viteConfigContent","plugins","testOption","includeVitest","testEnvironment","inSourceTests","coverageProvider","defineOption","devServerOption","previewServerOption","workerOption","cacheDir","handleViteConfigFileExists","join","length","configFile","undefined","projectName","Object","values","find","userProvidedTargetName","handleUnsupportedUserProvidedTargetsErrors","logger","warn","Confirm","require","prompt","name","message","initial","shouldConvert","run","Error","process","env","NX_VERBOSE_LOGGING","info","buildOptionObject","entry","fileName","formats","rollupOptions","external","outDir","reportCompressedSize","commonjsOptions","transformMixedEsModules","testOptionObject","globals","cache","dir","environment","reporters","coverage","provider","changed","ensureViteConfigIsCorrect"],"mappings":";;;;;;;;IAuBgBA,4BAA4B;eAA5BA;;IA8IAC,qBAAqB;eAArBA;;IAgCAC,sBAAsB;eAAtBA;;IA2CAC,sBAAsB;eAAtBA;;IAkDAC,gBAAgB;eAAhBA;;IAyCAC,YAAY;eAAZA;;IAsDAC,mBAAmB;eAAnBA;;IAkBAC,oBAAoB;eAApBA;;IA+EAC,sBAAsB;eAAtBA;;IAmLAC,mCAAmC;eAAnCA;;IAcAC,2BAA2B;eAA3BA;;IAqBMC,oCAAoC;eAApCA;;IAmEAC,sBAAsB;eAAtBA;;;;wBAjvBf;qCAMmC;AAOnC,SAASZ,6BACda,OAEC,EACDC,mBAA4C;IAO5C,MAAMC,SAA0D;QAC9DC,sBAAsB,CAAC;QACvBC,oCAAoC;QACpCC,iCAAiC,CAAC;QAClCC,yBAAyB,CAAC;IAC5B;IAEA,MAAMC,qBAAqB;QACzBC,OAAO;YACL;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;SACD;QACDC,OAAO;YACL;YACA;YACA;SACD;QACDC,MAAM;YAAC;YAAiB;YAAmB;SAAuB;IACpE;IAEA,MAAMC,uBAAuB;QAC3B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IAED,oDAAoD;IACpD,0EAA0E;IAC1E,kFAAkF;IAElF,SAASC,wBAAwBC,MAAc;QAC7C,IAAIZ,uCAAAA,mBAAqB,CAACY,OAAO,EAAE;gBAG7Bb;YAFJ,IACEO,kBAAkB,CAACM,OAAO,CAACC,QAAQ,EACjCd,sCAAAA,OAAO,CAACC,mBAAmB,CAACY,OAAO,CAAC,qBAApCb,oCAAsCe,QAAQ,GAEhD;gBACAb,OAAOC,oBAAoB,CAACU,OAAO,GAAGZ,mBAAmB,CAACY,OAAO;YACnE,OAAO;gBACLX,OAAOG,+BAA+B,CAACQ,OAAO,GAAG;YACnD;QACF;IACF;IAEAD,wBAAwB;IACxBA,wBAAwB;IACxBA,wBAAwB;IAExB,+DAA+D;IAC/D,IACEV,OAAOC,oBAAoB,CAACK,KAAK,IACjCN,OAAOC,oBAAoB,CAACM,KAAK,IACjCP,OAAOC,oBAAoB,CAACO,IAAI,EAChC;QACA,OAAOR;IACT;IAEA,oEAAoE;IACpE,4EAA4E;IAC5E,IAAK,MAAMW,UAAUb,QAAS;YAI5BgB,iBAEAA,kBAGAA,kBAEAA,kBAqBAd;QA/BA,MAAMe,eAAejB,OAAO,CAACa,OAAO,CAACE,QAAQ;QAE7C,MAAMC,iBAAiBd,OAAOI,uBAAuB;QACrDU,CAAAA,kBAAAA,gBAAeR,UAAfQ,gBAAeR,QACbS,iBAAiB,oBAAoBA,iBAAiB;QACxDD,CAAAA,mBAAAA,gBAAeP,UAAfO,iBAAeP,QACbQ,iBAAiB,yBACjBA,iBAAiB;QACnBD,CAAAA,mBAAAA,gBAAeN,SAAfM,iBAAeN,OACbO,iBAAiB,mBAAmBA,iBAAiB;QACvDD,CAAAA,mBAAAA,gBAAeE,YAAfF,iBAAeE,UACbD,iBAAiB,6BACjBA,iBAAiB;QAEnB,MAAME,eAAejB,OAAOC,oBAAoB;QAChD,IACE,CAACgB,aAAaX,KAAK,IACnBD,mBAAmBC,KAAK,CAACM,QAAQ,CAACG,eAClC;YACAE,aAAaX,KAAK,GAAGK;QACvB;QACA,IACE,CAACM,aAAaV,KAAK,IACnBF,mBAAmBE,KAAK,CAACK,QAAQ,CAACG,eAClC;YACAE,aAAaV,KAAK,GAAGI;QACvB;QACA,IAAI,CAACM,aAAaT,IAAI,IAAIH,mBAAmBG,IAAI,CAACI,QAAQ,CAACG,eAAe;YACxEE,aAAaT,IAAI,GAAGG;QACtB;QAEAX,CAAAA,UAAAA,QAAOE,uCAAPF,QAAOE,qCACLO,qBAAqBG,QAAQ,CAACG;IAClC;IAEA,OAAOf;AACT;AAEO,SAASd,sBACdgC,IAAU,EACVC,OAAyC,EACzCR,MAAc;QAadS;IAXA,MAAMA,UAAUC,IAAAA,gCAAwB,EAACH,MAAMC,QAAQC,OAAO;IAE9D,MAAME,mBAAmBC,IAAAA,yBAAiB,EACxCC,IAAAA,sBAAc,EAACJ,QAAQK,IAAI,GAC3B,YACAL,QAAQK,IAAI,KAAK,MAAMN,QAAQC,OAAO,GAAGA,QAAQK,IAAI;IAEvD,MAAMC,cAAqC;QACzCJ;IACF;;IAEAF,aAAAA,WAAAA,SAAQtB,8BAARsB,SAAQtB,UAAY,CAAC;IAErB,IAAIsB,QAAQtB,OAAO,CAACa,OAAO,EAAE;YAEpBS;QADPA,QAAQtB,OAAO,CAACa,OAAO,CAACE,QAAQ,GAAG;SAC5BO,kCAAAA,QAAQtB,OAAO,CAACa,OAAO,CAACQ,OAAO,0BAA/BC,gCAAiCO,UAAU;IACpD,OAAO;QACLP,QAAQtB,OAAO,CAACa,OAAO,GAAG;YACxBE,UAAU;YACVe,SAAS;gBAAC;aAA6B;YACvCT,SAASO;QACX;IACF;IAEAG,IAAAA,kCAA0B,EAACX,MAAMC,QAAQC,OAAO,EAAEA;AACpD;AAEO,SAASjC,uBACd+B,IAAU,EACVC,OAAyC,EACzCR,MAAc;QAWdS;IATA,MAAMA,UAAUC,IAAAA,gCAAwB,EAACH,MAAMC,QAAQC,OAAO;IAE9D,MAAMU,eAAyC;QAC7CC,YAAYR,IAAAA,yBAAiB,EAC3B,QACAH,QAAQK,IAAI,IAAI,MAAML,QAAQK,IAAI,GAAGN,QAAQC,OAAO;IAExD;;IAEAA,aAAAA,WAAAA,SAAQtB,8BAARsB,SAAQtB,UAAY,CAAC;IAErB,IAAIsB,QAAQtB,OAAO,CAACa,OAAO,EAAE;QAC3B,IAAIS,QAAQtB,OAAO,CAACa,OAAO,CAACE,QAAQ,KAAK,qBAAqB;gBACrCO,iCACKA;YAD5BU,YAAY,CAAC,OAAO,IAAGV,kCAAAA,QAAQtB,OAAO,CAACa,OAAO,CAACQ,OAAO,qBAA/BC,gCAAiCY,QAAQ;YAChEF,YAAY,CAAC,YAAY,IAAGV,mCAAAA,QAAQtB,OAAO,CAACa,OAAO,CAACQ,OAAO,qBAA/BC,iCAAiCa,UAAU;QACzE;QACAb,QAAQtB,OAAO,CAACa,OAAO,CAACQ,OAAO,GAAG,eAAKW;QACvCV,QAAQtB,OAAO,CAACa,OAAO,CAACE,QAAQ,GAAG;IACrC,OAAO;QACLO,QAAQtB,OAAO,CAACa,OAAO,GAAG;YACxBE,UAAU;YACVe,SAAS;gBAAC;aAAuB;YACjCM,sBAAsB;YACtBf,SAASW;YACTK,gBAAgB;gBACdC,aAAa;oBACXC,MAAM;gBACR;gBACAC,YAAY;oBACVD,MAAM;gBACR;YACF;QACF;IACF;IAEAR,IAAAA,kCAA0B,EAACX,MAAMC,QAAQC,OAAO,EAAEA;AACpD;AAEO,SAAShC,uBACd8B,IAAU,EACVC,OAAyC,EACzCR,MAAc;QAIdS;IAFA,MAAMA,UAAUC,IAAAA,gCAAwB,EAACH,MAAMC,QAAQC,OAAO;;IAE9DA,aAAAA,WAAAA,SAAQtB,8BAARsB,SAAQtB,UAAY,CAAC;IAErB,IAAIsB,QAAQtB,OAAO,CAACa,OAAO,EAAE;QAC3B,MAAM4B,cAAcnB,QAAQtB,OAAO,CAACa,OAAO;QAC3C,MAAM6B,eAA6C;YACjDC,aAAa,CAAC,EAAEtB,QAAQC,OAAO,CAAC,MAAM,CAAC;QACzC;QACA,IAAImB,YAAY1B,QAAQ,KAAK,mBAAmB;YAC9C2B,aAAaE,WAAW,GAAGtB,QAAQtB,OAAO,CAACa,OAAO,CAACQ,OAAO,CAACuB,WAAW;QACxE;QACAH,YAAY1B,QAAQ,GAAG;QACvB0B,YAAYpB,OAAO,GAAGqB;IACxB,OAAO;QACLpB,QAAQtB,OAAO,CAACa,OAAO,GAAG;YACxBE,UAAU;YACVqB,sBAAsB;YACtBf,SAAS;gBACPsB,aAAa,CAAC,EAAEtB,QAAQC,OAAO,CAAC,MAAM,CAAC;YACzC;YACAe,gBAAgB;gBACdC,aAAa;oBACXK,aAAa,CAAC,EAAEtB,QAAQC,OAAO,CAAC,kBAAkB,CAAC;oBACnDuB,KAAK;gBACP;gBACAL,YAAY;oBACVG,aAAa,CAAC,EAAEtB,QAAQC,OAAO,CAAC,iBAAiB,CAAC;oBAClDuB,KAAK;gBACP;YACF;QACF;IACF;IAEAd,IAAAA,kCAA0B,EAACX,MAAMC,QAAQC,OAAO,EAAEA;AACpD;AAUO,SAAS/B,iBACd6B,IAAU,EACVC,OAAyC,EACzCoB,WAAmB;QAQnBnB;IANA,MAAMA,UAAUC,IAAAA,gCAAwB,EAACH,MAAMC,QAAQC,OAAO;IAE9D,MAAMwB,iBAAmD;QACvDH,aAAa,CAAC,EAAEtB,QAAQC,OAAO,CAAC,MAAM,CAAC;IACzC;;IAEAA,aAAAA,WAAAA,SAAQtB,8BAARsB,SAAQtB,UAAY,CAAC;IAErB,mDAAmD;IACnD,IAAIsB,QAAQtB,OAAO,CAACyC,YAAY,EAAE;YAKN5B,iBACDA;QALzB,MAAMA,SAASS,QAAQtB,OAAO,CAACyC,YAAY;QAC3C,IAAI5B,OAAOE,QAAQ,KAAK,mBAAmB;YACzC+B,eAAeF,WAAW,GAAG/B,OAAOQ,OAAO,CAACuB,WAAW;QACzD;QACAE,cAAc,CAAC,QAAQ,IAAGjC,kBAAAA,OAAOQ,OAAO,qBAAdR,gBAAgBkC,KAAK;QAC/CD,cAAc,CAAC,OAAO,IAAGjC,mBAAAA,OAAOQ,OAAO,qBAAdR,iBAAgBmC,IAAI;IAC/C;IAEA,yBAAyB;IACzB1B,QAAQtB,OAAO,CAACkB,OAAO,GAAG;QACxBH,UAAU;QACVqB,sBAAsB;QACtBf,SAASyB;QACTT,gBAAgB;YACdC,aAAa;gBACXK,aAAa,CAAC,EAAEtB,QAAQC,OAAO,CAAC,kBAAkB,CAAC;YACrD;YACAkB,YAAY;gBACVG,aAAa,CAAC,EAAEtB,QAAQC,OAAO,CAAC,iBAAiB,CAAC;YACpD;QACF;IACF;IAEAS,IAAAA,kCAA0B,EAACX,MAAMC,QAAQC,OAAO,EAAEA;AACpD;AAEO,SAAS9B,aACd4B,IAAU,EACVC,OAAyC;IAEzC,MAAM4B,gBAAgB1B,IAAAA,gCAAwB,EAACH,MAAMC,QAAQC,OAAO;IAEpE,MAAM4B,SAASC,IAAAA,gBAAQ,EAAC/B,MAAM,CAAC,EAAE6B,cAActB,IAAI,CAAC,cAAc,CAAC;IAEnE,MAAMyB,wBAAwB;QAC5BvC,QAAQ;QACRwC,yBAAyB;QACzBC,QAAQ;QACRC,QAAQ;QACRC,kBAAkB;QAClBC,mBAAmB;QACnBC,iBAAiB;QACjBC,OAAO;YAAC;SAAc;QACtBC,QAAQ;IACV;IAEA,OAAQvC,QAAQwC,WAAW;QACzB,KAAK;YACHX,OAAOY,eAAe,GAAG,eACpBV;gBACHW,KAAK;oBAAC;oBAAO;oBAAgB;iBAAS;gBACtCC,SAAS;gBACTC,iBAAiB;gBACjBC,cAAc;gBACdC,8BAA8B;gBAC9BC,kCAAkC;gBAClCC,KAAK;;YAEPnB,OAAOoB,OAAO,GAAG;mBAAIpB,OAAOoB,OAAO;gBAAE;aAAM;YAC3C;QACF,KAAK;YACHpB,OAAOY,eAAe,GAAG,eACpBV;gBACHW,KAAK;oBAAC;oBAAU;iBAAM;gBACtBG,cAAc;gBACdD,iBAAiB;gBACjBV,QAAQ;gBACRgB,gBAAgB;gBAChBC,oBAAoB;gBACpBC,mBAAmB;;YAErBvB,OAAOoB,OAAO,GAAG;mBAAIpB,OAAOoB,OAAO;gBAAE;aAAM;YAC3C;QACF;YACE;IACJ;IAEAI,IAAAA,iBAAS,EAACtD,MAAM,CAAC,EAAE6B,cAActB,IAAI,CAAC,cAAc,CAAC,EAAEuB;AACzD;AAEO,SAASzD,oBACd2B,IAAU,EACVuD,WAAmB,EACnBC,qBAA8B;IAE9B,MAAMC,oBACJD,yBAAyBxD,KAAK0D,MAAM,CAACF,yBACjCA,wBACAxD,KAAK0D,MAAM,CAAC,CAAC,EAAEH,YAAY,kBAAkB,CAAC,IAC9C,CAAC,EAAEA,YAAY,kBAAkB,CAAC,GAClCvD,KAAK0D,MAAM,CAAC,CAAC,EAAEH,YAAY,kBAAkB,CAAC,IAC9C,CAAC,EAAEA,YAAY,kBAAkB,CAAC,GAClC;IACN,IAAIE,mBAAmB;QACrBzD,KAAK2D,MAAM,CAACF;IACd;AACF;AAEO,SAASnF,qBACd0B,IAAU,EACVC,OAAyC,EACzCsB,WAAmB;QAKjBM,4CAAAA,oCAAAA,wBAGAA,6CAAAA,qCAAAA;IANF,MAAMA,gBAAgB1B,IAAAA,gCAAwB,EAACH,MAAMC,QAAQC,OAAO;QAGlE2B;IADF,IAAI+B,gBACF/B,CAAAA,oDAAAA,yBAAAA,cAAcjD,OAAO,sBAArBiD,qCAAAA,sBAAuB,CAACN,YAAY,sBAApCM,6CAAAA,mCAAsC5B,OAAO,qBAA7C4B,2CAA+CgC,KAAK,YAApDhC,mDACA,CAAC,EAAEA,cAActB,IAAI,CAAC,eAAe,CAAC;QAEtCsB;IADF,IAAIiC,WACFjC,CAAAA,mDAAAA,0BAAAA,cAAcjD,OAAO,sBAArBiD,sCAAAA,uBAAuB,CAACN,YAAY,sBAApCM,8CAAAA,oCAAsC5B,OAAO,qBAA7C4B,4CAA+CkC,IAAI,YAAnDlC,kDACA,CAAC,EAAEA,cAActB,IAAI,CAAC,YAAY,EAChCN,QAAQwC,WAAW,KAAK,UAAU,MAAM,GACzC,CAAC;IAEJ,IAAIZ,cAActB,IAAI,KAAK,KAAK;QAC9BuD,WAAWA,SAASE,OAAO,CAACnC,cAActB,IAAI,EAAE;IAClD;IAEA,IACE,CAACP,KAAK0D,MAAM,CAACE,kBACb5D,KAAK0D,MAAM,CAAC,CAAC,EAAE7B,cAActB,IAAI,CAAC,WAAW,CAAC,GAC9C;QACAqD,gBAAgB,CAAC,EAAE/B,cAActB,IAAI,CAAC,WAAW,CAAC;IACpD;IAEA,IAAIP,KAAK0D,MAAM,CAACE,gBAAgB;QAC9B,MAAMK,mBAAmBjE,KAAKkE,IAAI,CAACN,eAAe;QAClD,IACE,CAACK,iBAAiBvE,QAAQ,CACxB,CAAC,2BAA2B,EAAEoE,SAAS,WAAW,CAAC,GAErD;YACA9D,KAAKmE,KAAK,CACR,CAAC,EAAEtC,cAActB,IAAI,CAAC,WAAW,CAAC,EAClC0D,iBAAiBD,OAAO,CACtB,WACA,CAAC,2BAA2B,EAAEF,SAAS;iBAChC,CAAC;YAIZ,IAAI9D,KAAK0D,MAAM,CAAC,CAAC,EAAE7B,cAActB,IAAI,CAAC,eAAe,CAAC,GAAG;gBACvDP,KAAK2D,MAAM,CAAC,CAAC,EAAE9B,cAActB,IAAI,CAAC,eAAe,CAAC;YACpD;QACF;IACF,OAAO;QACLP,KAAKmE,KAAK,CACR,CAAC,EAAEtC,cAActB,IAAI,CAAC,WAAW,CAAC,EAClC,CAAC;;;;;;;;;;qCAU8B,EAAEuD,SAAS;;aAEnC,CAAC;IAEZ;AACF;AAcO,SAASvF,uBACdyB,IAAU,EACVC,OAA8B,EAC9BmE,UAAmB,EACnBC,4BAA0C,EAC1CC,cAAwB;IAExB,MAAM,EAAE/D,MAAMgD,WAAW,EAAE,GAAGpD,IAAAA,gCAAwB,EAACH,MAAMC,QAAQC,OAAO;IAE5E,MAAMqE,iBAAiBD,iBACnB,CAAC,EAAEf,YAAY,iBAAiB,CAAC,GACjC,CAAC,EAAEA,YAAY,eAAe,CAAC;IAEnC,MAAMiB,cACJjB,gBAAgB,MACZ,CAAC,OAAO,EAAEtD,QAAQC,OAAO,CAAC,CAAC,GAC3B,CAAC,EAAEI,IAAAA,sBAAc,EAACiD,aAAa,KAAK,EAAEA,YAAY,CAAC;QAyBpCtD;IAvBrB,MAAMwE,cAAcL,aAChB,KACAnE,QAAQyE,UAAU,GAClB,CAAC;;;;iBAIU,EAAEF,YAAY;;;;;;;;iBAQd,EAAEvE,QAAQC,OAAO,CAAC;;;;;;;;qBAQd,EAAED,CAAAA,iCAAAA,QAAQ0E,qBAAqB,YAA7B1E,iCAAiC,GAAG;;QAEnD,CAAC,GACH,CAAC;;eAEQ,EAAEuE,YAAY;;;;;;IAMzB,CAAC;IAEH,MAAMI,UAAoB3E,QAAQ2E,OAAO,GAAG3E,QAAQ2E,OAAO,GAAG,EAAE;IAEhE,IAAI,CAACR,cAAcnE,QAAQyE,UAAU,EAAE;QACrCE,QAAQC,IAAI,CACV,CAAC,iCAAiC,CAAC,EACnC,CAAC,4BAA4B,CAAC;IAElC;IAEA,IAAIC,oBAAoB;IAExB,MAAMC,UAAU9E,QAAQ8E,OAAO,GAC3B;WAAI9E,QAAQ8E,OAAO;QAAE,CAAC,eAAe,CAAC;KAAC,GACvC;QAAC,CAAC,eAAe,CAAC;KAAC;IAEvB,IAAI,CAACX,cAAcnE,QAAQyE,UAAU,EAAE;QACrCK,QAAQF,IAAI,CACV,CAAC,6GAA6G,CAAC;IAEnH;IAEA,MAAMzE,mBACJmD,gBAAgB,MACZ,CAAC,WAAW,EAAEtD,QAAQC,OAAO,CAAC,CAAC,GAC/B,CAAC,EAAEI,IAAAA,sBAAc,EAACiD,aAAa,SAAS,EAAEA,YAAY,CAAC;QAQ3CtD;IANlB,MAAM+E,aAAa/E,QAAQgF,aAAa,GACpC,CAAC;;;YAGK,EAAE3E,IAAAA,sBAAc,EAACiD,aAAa;;kBAExB,EAAEtD,CAAAA,2BAAAA,QAAQiF,eAAe,YAAvBjF,2BAA2B,QAAQ;;IAEnD,EACEA,QAAQkF,aAAa,GACjB,CAAC,4DAA4D,CAAC,GAC9D,GACL;;;yBAGoB,EAAE/E,iBAAiB;gBAC5B,EACRH,QAAQmF,gBAAgB,GAAG,CAAC,CAAC,EAAEnF,QAAQmF,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CACpE;;IAEH,CAAC,GACC;IAEJ,MAAMC,eAAepF,QAAQkF,aAAa,GACtC,CAAC;;IAEH,CAAC,GACC;IAEJ,MAAMG,kBAAkBlB,aACpB,KACAnE,QAAQyE,UAAU,GAClB,KACA,CAAC;;;;MAID,CAAC;IAEL,MAAMa,sBAAsBnB,aACxB,KACAnE,QAAQyE,UAAU,GAClB,KACA,CAAC;;;;MAID,CAAC;IAEL,MAAMc,eAAe,CAAC;;;;SAIf,CAAC;IAER,MAAMC,WAAW,CAAC,WAAW,EAAEnF,IAAAA,sBAAc,EAC3CiD,aACA,mBAAmB,EAAEA,YAAY,EAAE,CAAC;IAEtC,IAAIvD,KAAK0D,MAAM,CAACa,iBAAiB;QAC/BmB,2BACE1F,MACAuE,gBACAtE,SACAwE,aACAD,aACAI,SACAG,SACAC,YACA5E,kBACAqF,UACAnF,IAAAA,sBAAc,EAACiD,cACfc;QAEF;IACF;IAEAS,oBAAoB,CAAC;;;MAGjB,EAAEF,QAAQe,IAAI,CAAC,OAAO,EAAEf,QAAQgB,MAAM,GAAG,MAAM,GAAG;;;;;QAKhD,EAAEH,SAAS;QACX,EAAEH,gBAAgB;QAClB,EAAEC,oBAAoB;;kBAEZ,EAAER,QAAQY,IAAI,CAAC,OAAO;QAChC,EAAEH,aAAa;QACf,EAAEf,YAAY;QACd,EAAEY,aAAa;QACf,EAAEL,WAAW;SACZ,CAAC;IAERhF,KAAKmE,KAAK,CAACI,gBAAgBO;AAC7B;AAEO,SAAStG,oCACdwB,IAAU,EACVuD,WAAmB,EACnBsC,UAAmB;IAEnB,OAAOA,cAAc7F,KAAK0D,MAAM,CAACmC,cAC7BA,aACA7F,KAAK0D,MAAM,CAACrD,IAAAA,yBAAiB,EAAC,CAAC,EAAEkD,YAAY,eAAe,CAAC,KAC7DlD,IAAAA,yBAAiB,EAAC,CAAC,EAAEkD,YAAY,eAAe,CAAC,IACjDvD,KAAK0D,MAAM,CAACrD,IAAAA,yBAAiB,EAAC,CAAC,EAAEkD,YAAY,eAAe,CAAC,KAC7DlD,IAAAA,yBAAiB,EAAC,CAAC,EAAEkD,YAAY,eAAe,CAAC,IACjDuC;AACN;AAEO,SAASrH,4BACduB,IAAU,EACV+F,WAAmB,EACnBtG,MAAe;IAEf,IAAI8E;IACJ,MAAM,EAAE3F,OAAO,EAAE2B,IAAI,EAAE,GAAGJ,IAAAA,gCAAwB,EAACH,MAAM+F;IACzD,IAAItG,QAAQ;YACOb,yBAAAA;QAAjB2F,iBAAiB3F,4BAAAA,kBAAAA,OAAS,CAACa,OAAO,sBAAjBb,0BAAAA,gBAAmBqB,OAAO,qBAA1BrB,wBAA4BiH,UAAU;IACzD,OAAO;YAMY/D;QALjB,MAAMA,SAASkE,OAAOC,MAAM,CAACrH,SAASsH,IAAI,CACxC,CAACpE,SACCA,OAAOnC,QAAQ,KAAK,oBACpBmC,OAAOnC,QAAQ,KAAK;QAExB4E,iBAAiBzC,2BAAAA,kBAAAA,OAAQ7B,OAAO,qBAAf6B,gBAAiB+D,UAAU;IAC9C;IAEA,OAAOrH,oCAAoCwB,MAAMO,MAAMgE;AACzD;AAEO,eAAe7F,qCACpBO,+BAA4C,EAC5CkH,sBAA8C,EAC9CpH,oBAA0C;IAE1C,IAAIE,gCAAgCG,KAAK,IAAIL,qBAAqBK,KAAK,EAAE;QACvE,MAAMgH,2CACJD,uBAAuB/G,KAAK,EAC5BL,qBAAqBK,KAAK,EAC1B,SACA;IAEJ;IAEA,IAAIH,gCAAgCI,KAAK,IAAIN,qBAAqBM,KAAK,EAAE;QACvE,MAAM+G,2CACJD,uBAAuB9G,KAAK,EAC5BN,qBAAqBM,KAAK,EAC1B,SACA;IAEJ;IAEA,IAAIJ,gCAAgCK,IAAI,IAAIP,qBAAqBO,IAAI,EAAE;QACrE,MAAM8G,2CACJD,uBAAuB7G,IAAI,EAC3BP,qBAAqBO,IAAI,EACzB,QACA;IAEJ;AACF;AAEA,eAAe8G,2CACbD,sBAA8B,EAC9BpH,oBAA4B,EAC5BU,MAAc,EACdE,QAAyC;IAEzC0G,cAAM,CAACC,IAAI,CACT,CAAC,WAAW,EAAE7G,OAAO,sBAAsB,EAAE0G,uBAAuB,0CAA0C,EAAExG,SAAS;qCACxF,EAAEF,OAAO,+CAA+C,EAAEV,qBAAqB;;;;IAIhH,CAAC;IAEH,MAAM,EAAEwH,OAAO,EAAE,GAAGC,QAAQ;IAC5B,MAAMC,SAAS,IAAIF,QAAQ;QACzBG,MAAM;QACNC,SAAS,CAAC,sBAAsB,EAAE5H,qBAAqB,4BAA4B,EAAEY,SAAS,UAAU,CAAC;QACzGiH,SAAS;IACX;IACA,MAAMC,gBAAgB,MAAMJ,OAAOK,GAAG;IACtC,IAAI,CAACD,eAAe;QAClB,MAAM,IAAIE,MACR,CAAC,IAAI,EAAEtH,OAAO,QAAQ,EAAE0G,uBAAuB,yCAAyC,EAAExG,SAAS;wDACjD,EAAEF,OAAO;gEACD,EAAEV,qBAAqB;;;;MAIjF,CAAC;IAEL;AACF;AAEO,eAAeJ,uBAAuBoH,WAAmB;IAC9DM,cAAM,CAACC,IAAI,CACT,CAAC;+CAC0C,EAAEP,YAAY;;;;;;;;;MASvD,CAAC;IAGL,MAAM,EAAEQ,OAAO,EAAE,GAAGC,QAAQ;IAC5B,MAAMC,SAAS,IAAIF,QAAQ;QACzBG,MAAM;QACNC,SAAS,CAAC,6DAA6D,CAAC;QACxEC,SAAS;IACX;IACA,MAAMC,gBAAgB,MAAMJ,OAAOK,GAAG;IACtC,IAAI,CAACD,eAAe;QAClB,MAAM,IAAIE,MAAM,CAAC;;;IAGjB,CAAC;IACH;AACF;AAEA,SAASrB,2BACP1F,IAAU,EACVuE,cAAsB,EACtBtE,OAA8B,EAC9BwE,WAAmB,EACnBD,WAAmB,EACnBI,OAAiB,EACjBG,OAAiB,EACjBC,UAAkB,EAClB5E,gBAAwB,EACxBqF,QAAgB,EAChBnF,cAAsB,EACtB+D,4BAA0C;IAE1C,IACEA,CAAAA,gDAAAA,6BAA8BjF,KAAK,MACnCiF,gDAAAA,6BAA8B/E,IAAI,GAClC;QACA;IACF;IAEA,IAAI0H,QAAQC,GAAG,CAACC,kBAAkB,KAAK,QAAQ;QAC7Cb,cAAM,CAACc,IAAI,CACT,CAAC,0CAA0C,EAAElH,QAAQC,OAAO,CAAC,CAAC,CAAC;IAEnE;QAWkBD;IATlB,MAAMmH,oBAAoBnH,QAAQyE,UAAU,GACxC;QACE/B,KAAK;YACH0E,OAAO;YACPX,MAAMzG,QAAQC,OAAO;YACrBoH,UAAU;YACVC,SAAS;gBAAC;gBAAM;aAAM;QACxB;QACAC,eAAe;YACbC,UAAUxH,CAAAA,iCAAAA,QAAQ0E,qBAAqB,YAA7B1E,iCAAiC,EAAE;QAC/C;QACAyH,QAAQlD;QACRmD,sBAAsB;QACtBC,iBAAiB;YACfC,yBAAyB;QAC3B;IACF,IACA;QACEH,QAAQlD;QACRmD,sBAAsB;QACtBC,iBAAiB;YACfC,yBAAyB;QAC3B;IACF;QAOW5H,0BAKEA;IAVjB,MAAM6H,mBAAmB;QACvBC,SAAS;QACTC,OAAO;YACLC,KAAK,CAAC,EAAE3H,eAAe,oBAAoB,CAAC;QAC9C;QACA4H,aAAajI,CAAAA,2BAAAA,QAAQiF,eAAe,YAAvBjF,2BAA2B;QACxCiD,SAAS;YAAC;SAAuD;QACjEiF,WAAW;YAAC;SAAU;QACtBC,UAAU;YACRhI,kBAAkBA;YAClBiI,UAAU,CAAC,EAAEpI,CAAAA,4BAAAA,QAAQmF,gBAAgB,YAAxBnF,4BAA4B,KAAK,CAAC;QACjD;IACF;IAEA,MAAMqI,UAAUC,IAAAA,8CAAyB,EACvCvI,MACAuE,gBACAE,aACA2C,mBACAxC,SACAG,SACAC,YACA8C,kBACArC,UACApB,uCAAAA,+BAAgC,CAAC;IAGnC,IAAI,CAACiE,SAAS;QACZjC,cAAM,CAACC,IAAI,CACT,CAAC,wEAAwE,EAAE/B,eAAe;;QAExF,EAAEE,YAAY;;QAEd,CAAC;IAEP;AACF"}
@@ -27,6 +27,7 @@ _export(exports, {
27
27
  });
28
28
  const _devkit = require("@nx/devkit");
29
29
  const _fs = require("fs");
30
+ const _executorutils = require("./executor-utils");
30
31
  function normalizeViteConfigFilePath(contextRoot, projectRoot, configFile) {
31
32
  if (configFile) {
32
33
  const normalized = (0, _devkit.joinPathFragments)(configFile);
@@ -66,7 +67,7 @@ function getViteServerProxyConfigPath(nxProxyConfig, context) {
66
67
  async function getViteServerOptions(options, context) {
67
68
  // returns vite ServerOptions
68
69
  // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.
69
- const { searchForWorkspaceRoot } = await Function('return import("vite")')();
70
+ const { searchForWorkspaceRoot } = await (0, _executorutils.loadViteDynamicImport)();
70
71
  const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
71
72
  const serverOptions = {
72
73
  fs: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/vite/src/utils/options-utils.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n logger,\n parseTargetString,\n readTargetOptions,\n} from '@nx/devkit';\nimport { existsSync } from 'fs';\nimport { ViteDevServerExecutorOptions } from '../executors/dev-server/schema';\n\n/**\n * Returns the path to the vite config file or undefined when not found.\n */\nexport function normalizeViteConfigFilePath(\n contextRoot: string,\n projectRoot: string,\n configFile?: string\n): string | undefined {\n if (configFile) {\n const normalized = joinPathFragments(configFile);\n if (!existsSync(normalized)) {\n throw new Error(\n `Could not find vite config at provided path \"${normalized}\".`\n );\n }\n return normalized;\n }\n\n const allowsExt = ['js', 'mjs', 'ts', 'cjs', 'mts', 'cts'];\n\n for (const ext of allowsExt) {\n if (\n existsSync(\n joinPathFragments(contextRoot, projectRoot, `vite.config.${ext}`)\n )\n ) {\n return joinPathFragments(contextRoot, projectRoot, `vite.config.${ext}`);\n } else if (\n existsSync(\n joinPathFragments(contextRoot, projectRoot, `vitest.config.${ext}`)\n )\n ) {\n return joinPathFragments(\n contextRoot,\n projectRoot,\n `vitest.config.${ext}`\n );\n }\n }\n}\n\nexport function getProjectTsConfigPath(\n projectRoot: string\n): string | undefined {\n return existsSync(joinPathFragments(projectRoot, 'tsconfig.app.json'))\n ? joinPathFragments(projectRoot, 'tsconfig.app.json')\n : existsSync(joinPathFragments(projectRoot, 'tsconfig.lib.json'))\n ? joinPathFragments(projectRoot, 'tsconfig.lib.json')\n : existsSync(joinPathFragments(projectRoot, 'tsconfig.json'))\n ? joinPathFragments(projectRoot, 'tsconfig.json')\n : undefined;\n}\n\n/**\n * Returns the path to the proxy configuration file or undefined when not found.\n */\nexport function getViteServerProxyConfigPath(\n nxProxyConfig: string | undefined,\n context: ExecutorContext\n): string | undefined {\n if (nxProxyConfig) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n const proxyConfigPath = nxProxyConfig\n ? joinPathFragments(context.root, nxProxyConfig)\n : joinPathFragments(projectRoot, 'proxy.conf.json');\n\n if (existsSync(proxyConfigPath)) {\n return proxyConfigPath;\n }\n }\n}\n\n/**\n * Builds the options for the vite dev server.\n */\nexport async function getViteServerOptions(\n options: ViteDevServerExecutorOptions,\n context: ExecutorContext\n): Promise<Record<string, unknown>> {\n // returns vite ServerOptions\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { searchForWorkspaceRoot } = await (Function(\n 'return import(\"vite\")'\n )() as Promise<typeof import('vite')>);\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const serverOptions: Record<string, unknown> = {\n fs: {\n allow: [\n searchForWorkspaceRoot(joinPathFragments(projectRoot)),\n joinPathFragments(context.root, 'node_modules/vite'),\n ],\n },\n };\n\n const proxyConfigPath = getViteServerProxyConfigPath(\n options.proxyConfig,\n context\n );\n if (proxyConfigPath) {\n logger.info(`Loading proxy configuration from: ${proxyConfigPath}`);\n serverOptions.proxy = require(proxyConfigPath);\n }\n\n return serverOptions;\n}\n\nexport function getProxyConfig(\n context: ExecutorContext,\n proxyConfig?: string\n): Record<string, string | unknown> | undefined {\n const proxyConfigPath = getViteServerProxyConfigPath(proxyConfig, context);\n if (proxyConfigPath) {\n logger.info(`Loading proxy configuration from: ${proxyConfigPath}`);\n return require(proxyConfigPath);\n }\n return;\n}\n\nexport function getNxTargetOptions(target: string, context: ExecutorContext) {\n const targetObj = parseTargetString(target, context);\n return readTargetOptions(targetObj, context);\n}\n"],"names":["normalizeViteConfigFilePath","getProjectTsConfigPath","getViteServerProxyConfigPath","getViteServerOptions","getProxyConfig","getNxTargetOptions","contextRoot","projectRoot","configFile","normalized","joinPathFragments","existsSync","Error","allowsExt","ext","undefined","nxProxyConfig","context","projectsConfigurations","projects","projectName","root","proxyConfigPath","options","searchForWorkspaceRoot","Function","serverOptions","fs","allow","proxyConfig","logger","info","proxy","require","target","targetObj","parseTargetString","readTargetOptions"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../packages/vite/src/utils/options-utils.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n logger,\n parseTargetString,\n readTargetOptions,\n} from '@nx/devkit';\nimport { existsSync } from 'fs';\nimport { ViteDevServerExecutorOptions } from '../executors/dev-server/schema';\nimport { loadViteDynamicImport } from './executor-utils';\n\n/**\n * Returns the path to the vite config file or undefined when not found.\n */\nexport function normalizeViteConfigFilePath(\n contextRoot: string,\n projectRoot: string,\n configFile?: string\n): string | undefined {\n if (configFile) {\n const normalized = joinPathFragments(configFile);\n if (!existsSync(normalized)) {\n throw new Error(\n `Could not find vite config at provided path \"${normalized}\".`\n );\n }\n return normalized;\n }\n\n const allowsExt = ['js', 'mjs', 'ts', 'cjs', 'mts', 'cts'];\n\n for (const ext of allowsExt) {\n if (\n existsSync(\n joinPathFragments(contextRoot, projectRoot, `vite.config.${ext}`)\n )\n ) {\n return joinPathFragments(contextRoot, projectRoot, `vite.config.${ext}`);\n } else if (\n existsSync(\n joinPathFragments(contextRoot, projectRoot, `vitest.config.${ext}`)\n )\n ) {\n return joinPathFragments(\n contextRoot,\n projectRoot,\n `vitest.config.${ext}`\n );\n }\n }\n}\n\nexport function getProjectTsConfigPath(\n projectRoot: string\n): string | undefined {\n return existsSync(joinPathFragments(projectRoot, 'tsconfig.app.json'))\n ? joinPathFragments(projectRoot, 'tsconfig.app.json')\n : existsSync(joinPathFragments(projectRoot, 'tsconfig.lib.json'))\n ? joinPathFragments(projectRoot, 'tsconfig.lib.json')\n : existsSync(joinPathFragments(projectRoot, 'tsconfig.json'))\n ? joinPathFragments(projectRoot, 'tsconfig.json')\n : undefined;\n}\n\n/**\n * Returns the path to the proxy configuration file or undefined when not found.\n */\nexport function getViteServerProxyConfigPath(\n nxProxyConfig: string | undefined,\n context: ExecutorContext\n): string | undefined {\n if (nxProxyConfig) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n const proxyConfigPath = nxProxyConfig\n ? joinPathFragments(context.root, nxProxyConfig)\n : joinPathFragments(projectRoot, 'proxy.conf.json');\n\n if (existsSync(proxyConfigPath)) {\n return proxyConfigPath;\n }\n }\n}\n\n/**\n * Builds the options for the vite dev server.\n */\nexport async function getViteServerOptions(\n options: ViteDevServerExecutorOptions,\n context: ExecutorContext\n): Promise<Record<string, unknown>> {\n // returns vite ServerOptions\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { searchForWorkspaceRoot } = await loadViteDynamicImport();\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const serverOptions: Record<string, unknown> = {\n fs: {\n allow: [\n searchForWorkspaceRoot(joinPathFragments(projectRoot)),\n joinPathFragments(context.root, 'node_modules/vite'),\n ],\n },\n };\n\n const proxyConfigPath = getViteServerProxyConfigPath(\n options.proxyConfig,\n context\n );\n if (proxyConfigPath) {\n logger.info(`Loading proxy configuration from: ${proxyConfigPath}`);\n serverOptions.proxy = require(proxyConfigPath);\n }\n\n return serverOptions;\n}\n\nexport function getProxyConfig(\n context: ExecutorContext,\n proxyConfig?: string\n): Record<string, string | unknown> | undefined {\n const proxyConfigPath = getViteServerProxyConfigPath(proxyConfig, context);\n if (proxyConfigPath) {\n logger.info(`Loading proxy configuration from: ${proxyConfigPath}`);\n return require(proxyConfigPath);\n }\n return;\n}\n\nexport function getNxTargetOptions(target: string, context: ExecutorContext) {\n const targetObj = parseTargetString(target, context);\n return readTargetOptions(targetObj, context);\n}\n"],"names":["normalizeViteConfigFilePath","getProjectTsConfigPath","getViteServerProxyConfigPath","getViteServerOptions","getProxyConfig","getNxTargetOptions","contextRoot","projectRoot","configFile","normalized","joinPathFragments","existsSync","Error","allowsExt","ext","undefined","nxProxyConfig","context","projectsConfigurations","projects","projectName","root","proxyConfigPath","options","searchForWorkspaceRoot","loadViteDynamicImport","serverOptions","fs","allow","proxyConfig","logger","info","proxy","require","target","targetObj","parseTargetString","readTargetOptions"],"mappings":"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"}