@nx/vite 17.3.0-beta.2 → 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.2",
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.2",
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.2",
36
+ "@nx/js": "17.3.0-beta.3",
37
37
  "tsconfig-paths": "^4.1.2",
38
- "@nrwl/vite": "17.3.0-beta.2"
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"}
@@ -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": [
@@ -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"}
@@ -65,16 +65,20 @@ async function buildViteTargets(configFilePath, projectRoot, options, context) {
65
65
  command: 'build',
66
66
  mode: 'production'
67
67
  }, configFilePath);
68
- const { buildOutputs, testOutputs } = getOutputs(viteConfig == null ? void 0 : viteConfig.config, projectRoot);
68
+ const { buildOutputs, testOutputs, hasTest } = getOutputs(viteConfig == null ? void 0 : viteConfig.config, projectRoot);
69
69
  const namedInputs = (0, _getnamedinputs.getNamedInputs)(projectRoot, context);
70
70
  const targets = {};
71
+ // If file is not vitest.config, create targets for build, serve, preview and serve-static
71
72
  if (!configFilePath.includes('vitest.config')) {
72
73
  targets[options.buildTargetName] = await buildTarget(options.buildTargetName, namedInputs, buildOutputs, projectRoot);
73
74
  targets[options.serveTargetName] = serveTarget(projectRoot);
74
75
  targets[options.previewTargetName] = previewTarget(projectRoot);
75
76
  targets[options.serveStaticTargetName] = serveStaticTarget(options);
76
77
  }
77
- targets[options.testTargetName] = await testTarget(namedInputs, testOutputs, projectRoot);
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
+ }
78
82
  return targets;
79
83
  }
80
84
  async function buildTarget(buildTargetName, namedInputs, outputs, projectRoot) {
@@ -166,7 +170,8 @@ function getOutputs(viteConfig, projectRoot) {
166
170
  ],
167
171
  testOutputs: [
168
172
  reportsDirectoryPath
169
- ]
173
+ ],
174
+ hasTest: !!test
170
175
  };
171
176
  }
172
177
  function normalizeOutputPath(outputPath, projectRoot, path) {
@@ -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 { 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 } = getOutputs(\n viteConfig?.config,\n projectRoot\n );\n\n const namedInputs = getNamedInputs(projectRoot, context);\n\n const targets: Record<string, TargetConfiguration> = {};\n\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 targets[options.testTargetName] = await testTarget(\n namedInputs,\n testOutputs,\n projectRoot\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} {\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 };\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","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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"}
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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"}
@@ -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';
@@ -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 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","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","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":"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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":"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"}