@nx/vite 16.4.0-beta.1 → 16.4.0-beta.13

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.
Files changed (38) hide show
  1. package/migrations.json +46 -4
  2. package/package.json +5 -5
  3. package/src/executors/build/build.impl.js +9 -2
  4. package/src/executors/build/build.impl.js.map +1 -1
  5. package/src/executors/build/schema.d.ts +2 -0
  6. package/src/executors/build/schema.json +10 -0
  7. package/src/executors/dev-server/dev-server.impl.js +2 -3
  8. package/src/executors/dev-server/dev-server.impl.js.map +1 -1
  9. package/src/executors/dev-server/schema.d.ts +1 -0
  10. package/src/executors/dev-server/schema.json +5 -0
  11. package/src/executors/test/vitest.impl.js +2 -3
  12. package/src/executors/test/vitest.impl.js.map +1 -1
  13. package/src/generators/configuration/configuration.js +7 -2
  14. package/src/generators/configuration/configuration.js.map +1 -1
  15. package/src/generators/configuration/schema.d.ts +1 -0
  16. package/src/generators/configuration/schema.json +7 -1
  17. package/src/generators/init/init.js +9 -2
  18. package/src/generators/init/init.js.map +1 -1
  19. package/src/generators/init/schema.d.ts +1 -0
  20. package/src/generators/init/schema.json +6 -0
  21. package/src/generators/vitest/schema.d.ts +1 -0
  22. package/src/generators/vitest/schema.json +5 -0
  23. package/src/generators/vitest/vitest-generator.js +4 -1
  24. package/src/generators/vitest/vitest-generator.js.map +1 -1
  25. package/src/utils/executor-utils.d.ts +9 -0
  26. package/src/utils/executor-utils.js +45 -0
  27. package/src/utils/executor-utils.js.map +1 -0
  28. package/src/utils/generator-utils.js +5 -4
  29. package/src/utils/generator-utils.js.map +1 -1
  30. package/src/utils/options-utils.d.ts +1 -0
  31. package/src/utils/options-utils.js +7 -1
  32. package/src/utils/options-utils.js.map +1 -1
  33. package/src/utils/test-files/test-vite-configs.d.ts +2 -2
  34. package/src/utils/test-files/test-vite-configs.js +2 -2
  35. package/src/utils/test-files/test-vite-configs.js.map +1 -1
  36. package/src/utils/versions.d.ts +12 -13
  37. package/src/utils/versions.js +18 -22
  38. package/src/utils/versions.js.map +1 -1
package/migrations.json CHANGED
@@ -26,6 +26,52 @@
26
26
  }
27
27
  },
28
28
  "packageJsonUpdates": {
29
+ "16.4.0-beta.7": {
30
+ "version": "16.4.0-beta.7",
31
+ "packages": {
32
+ "vite": {
33
+ "version": "^4.3.9",
34
+ "alwaysAddToPackageJson": false
35
+ }
36
+ }
37
+ },
38
+ "16.4.0-beta.4": {
39
+ "version": "16.4.0-beta.4",
40
+ "packages": {
41
+ "@vitejs/plugin-react": {
42
+ "version": "^4.0.0",
43
+ "alwaysAddToPackageJson": false
44
+ },
45
+ "@vitejs/plugin-react-swc": {
46
+ "version": "^3.3.2",
47
+ "alwaysAddToPackageJson": false
48
+ },
49
+ "jsdom": {
50
+ "version": "~22.1.0",
51
+ "alwaysAddToPackageJson": false
52
+ },
53
+ "vite-plugin-dts": {
54
+ "version": "~2.3.0",
55
+ "alwaysAddToPackageJson": false
56
+ },
57
+ "vitest": {
58
+ "version": "^0.32.0",
59
+ "alwaysAddToPackageJson": false
60
+ },
61
+ "@vitest/coverage-c8": {
62
+ "version": "^0.32.0",
63
+ "alwaysAddToPackageJson": false
64
+ },
65
+ "@vitest/ui": {
66
+ "version": "^0.32.0",
67
+ "alwaysAddToPackageJson": false
68
+ },
69
+ "@vitest/coverage-istanbul": {
70
+ "version": "^0.32.0",
71
+ "alwaysAddToPackageJson": false
72
+ }
73
+ }
74
+ },
29
75
  "16.1.0-beta.0": {
30
76
  "version": "16.1.0-beta.0",
31
77
  "packages": {
@@ -75,10 +121,6 @@
75
121
  "version": "^4.0.2",
76
122
  "alwaysAddToPackageJson": false
77
123
  },
78
- "vite-plugin-eslint": {
79
- "version": "^1.8.1",
80
- "alwaysAddToPackageJson": false
81
- },
82
124
  "vitest": {
83
125
  "version": "^0.25.8",
84
126
  "alwaysAddToPackageJson": false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/vite",
3
- "version": "16.4.0-beta.1",
3
+ "version": "16.4.0-beta.13",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for building and testing applications using Vite",
6
6
  "repository": {
@@ -29,9 +29,9 @@
29
29
  "migrations": "./migrations.json"
30
30
  },
31
31
  "dependencies": {
32
- "@nrwl/vite": "16.4.0-beta.1",
33
- "@nx/devkit": "16.4.0-beta.1",
34
- "@nx/js": "16.4.0-beta.1",
32
+ "@nrwl/vite": "16.4.0-beta.13",
33
+ "@nx/devkit": "16.4.0-beta.13",
34
+ "@nx/js": "16.4.0-beta.13",
35
35
  "@phenomnomnominal/tsquery": "~5.0.1",
36
36
  "@swc/helpers": "~0.5.0",
37
37
  "dotenv": "~10.0.0",
@@ -59,5 +59,5 @@
59
59
  "./src/executors/*.impl": "./src/executors/*.impl.js",
60
60
  "./src/executors/*/compat": "./src/executors/*/compat.js"
61
61
  },
62
- "gitHead": "1c4fb934b607f0d93bb23bff2cf0f39b31a8fa43"
62
+ "gitHead": "d81afedfcc8d07db8cdb9b0e9286de0321ee184e"
63
63
  }
@@ -22,14 +22,21 @@ const _js = require("@nx/js");
22
22
  const _fs = require("fs");
23
23
  const _path = require("path");
24
24
  const _asynciterable = require("@nx/devkit/src/utils/async-iterable");
25
- const _internal = require("@nx/js/src/internal");
25
+ const _executorutils = require("../../utils/executor-utils");
26
26
  async function* viteBuildExecutor(options, context) {
27
27
  const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
28
- (0, _internal.registerTsConfigPaths)((0, _path.resolve)(projectRoot, 'tsconfig.json'));
28
+ (0, _executorutils.registerPaths)(projectRoot, options, context);
29
29
  const normalizedOptions = normalizeOptions(options);
30
30
  const buildConfig = (0, _vite.mergeConfig)((0, _optionsutils.getViteSharedConfig)(normalizedOptions, false, context), {
31
31
  build: (0, _optionsutils.getViteBuildOptions)(normalizedOptions, context)
32
32
  });
33
+ if (!options.skipTypeCheck) {
34
+ await (0, _executorutils.validateTypes)({
35
+ workspaceRoot: context.root,
36
+ projectRoot: projectRoot,
37
+ tsconfig: (0, _optionsutils.getProjectTsConfigPath)(projectRoot)
38
+ });
39
+ }
33
40
  const watcherOrOutput = await runInstance(buildConfig);
34
41
  const libraryPackageJson = (0, _path.resolve)(projectRoot, 'package.json');
35
42
  const rootPackageJson = (0, _path.resolve)(context.root, 'package.json');
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/executors/build/build.impl.ts"],"sourcesContent":["import 'dotenv/config';\nimport { ExecutorContext, writeJsonFile } from '@nx/devkit';\nimport { build, InlineConfig, mergeConfig } from 'vite';\nimport {\n getViteBuildOptions,\n getViteSharedConfig,\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 { resolve } from 'path';\nimport { createAsyncIterable } from '@nx/devkit/src/utils/async-iterable';\n\nimport { registerTsConfigPaths } from '@nx/js/src/internal';\n\nexport async function* viteBuildExecutor(\n options: ViteBuildExecutorOptions,\n context: ExecutorContext\n) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n registerTsConfigPaths(resolve(projectRoot, 'tsconfig.json'));\n\n const normalizedOptions = normalizeOptions(options);\n\n const buildConfig = mergeConfig(\n getViteSharedConfig(normalizedOptions, false, context),\n {\n build: getViteBuildOptions(normalizedOptions, context),\n }\n );\n\n const watcherOrOutput = await runInstance(buildConfig);\n\n const libraryPackageJson = resolve(projectRoot, 'package.json');\n const rootPackageJson = resolve(context.root, 'package.json');\n const distPackageJson = resolve(normalizedOptions.outputPath, 'package.json');\n\n // Generate a package.json if option has been set.\n if (options.generatePackageJson) {\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(`${options.outputPath}/package.json`, builtPackageJson);\n\n const lockFile = createLockFile(builtPackageJson);\n writeFileSync(`${options.outputPath}/${getLockFileName()}`, lockFile, {\n encoding: 'utf-8',\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: normalizedOptions.outputPath,\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(normalizedOptions.outputPath, fileName);\n yield { success: true, outfile };\n }\n}\n\nfunction runInstance(options: InlineConfig) {\n return build({\n ...options,\n });\n}\n\nfunction normalizeOptions(options: ViteBuildExecutorOptions) {\n const normalizedOptions = { ...options };\n\n // coerce watch to null or {} to match with Vite's watch config\n if (options.watch === false) {\n normalizedOptions.watch = null;\n } else if (options.watch === true) {\n normalizedOptions.watch = {};\n }\n\n return normalizedOptions;\n}\n\nexport default viteBuildExecutor;\n"],"names":["viteBuildExecutor","options","context","projectRoot","projectsConfigurations","projects","projectName","root","registerTsConfigPaths","resolve","normalizedOptions","normalizeOptions","buildConfig","mergeConfig","getViteSharedConfig","build","getViteBuildOptions","watcherOrOutput","runInstance","libraryPackageJson","rootPackageJson","distPackageJson","outputPath","generatePackageJson","builtPackageJson","createPackageJson","projectGraph","target","targetName","isProduction","includeDevDependenciesInPackageJson","type","writeJsonFile","lockFile","createLockFile","writeFileSync","getLockFileName","encoding","existsSync","copyAssets","assets","input","output","glob","iterable","createAsyncIterable","next","success","on","event","code","result","close","fileName","outfile","watch"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/executors/build/build.impl.ts"],"sourcesContent":["import 'dotenv/config';\nimport { ExecutorContext, writeJsonFile } from '@nx/devkit';\nimport { build, InlineConfig, mergeConfig } from 'vite';\nimport {\n getProjectTsConfigPath,\n getViteBuildOptions,\n getViteSharedConfig,\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 { resolve } from 'path';\nimport { createAsyncIterable } from '@nx/devkit/src/utils/async-iterable';\nimport { registerPaths, validateTypes } from '../../utils/executor-utils';\n\nexport async function* viteBuildExecutor(\n options: ViteBuildExecutorOptions,\n context: ExecutorContext\n) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n registerPaths(projectRoot, options, context);\n\n const normalizedOptions = normalizeOptions(options);\n\n const buildConfig = mergeConfig(\n getViteSharedConfig(normalizedOptions, false, context),\n {\n build: getViteBuildOptions(normalizedOptions, context),\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 runInstance(buildConfig);\n\n const libraryPackageJson = resolve(projectRoot, 'package.json');\n const rootPackageJson = resolve(context.root, 'package.json');\n const distPackageJson = resolve(normalizedOptions.outputPath, 'package.json');\n\n // Generate a package.json if option has been set.\n if (options.generatePackageJson) {\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(`${options.outputPath}/package.json`, builtPackageJson);\n\n const lockFile = createLockFile(builtPackageJson);\n writeFileSync(`${options.outputPath}/${getLockFileName()}`, lockFile, {\n encoding: 'utf-8',\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: normalizedOptions.outputPath,\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(normalizedOptions.outputPath, fileName);\n yield { success: true, outfile };\n }\n}\n\nfunction runInstance(options: InlineConfig) {\n return build({\n ...options,\n });\n}\n\nfunction normalizeOptions(options: ViteBuildExecutorOptions) {\n const normalizedOptions = { ...options };\n\n // coerce watch to null or {} to match with Vite's watch config\n if (options.watch === false) {\n normalizedOptions.watch = null;\n } else if (options.watch === true) {\n normalizedOptions.watch = {};\n }\n\n return normalizedOptions;\n}\n\nexport default viteBuildExecutor;\n"],"names":["viteBuildExecutor","options","context","projectRoot","projectsConfigurations","projects","projectName","root","registerPaths","normalizedOptions","normalizeOptions","buildConfig","mergeConfig","getViteSharedConfig","build","getViteBuildOptions","skipTypeCheck","validateTypes","workspaceRoot","tsconfig","getProjectTsConfigPath","watcherOrOutput","runInstance","libraryPackageJson","resolve","rootPackageJson","distPackageJson","outputPath","generatePackageJson","builtPackageJson","createPackageJson","projectGraph","target","targetName","isProduction","includeDevDependenciesInPackageJson","type","writeJsonFile","lockFile","createLockFile","writeFileSync","getLockFileName","encoding","existsSync","copyAssets","assets","input","output","glob","iterable","createAsyncIterable","next","success","on","event","code","result","close","fileName","outfile","watch"],"mappings":"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"}
@@ -18,4 +18,6 @@ export interface ViteBuildExecutorOptions {
18
18
  generatePackageJson?: boolean;
19
19
  includeDevDependenciesInPackageJson?: boolean;
20
20
  cssCodeSplit?: boolean;
21
+ buildLibsFromSource?: boolean;
22
+ skipTypeCheck?: boolean;
21
23
  }
@@ -18,6 +18,16 @@
18
18
  "x-completion-type": "directory",
19
19
  "x-priority": "important"
20
20
  },
21
+ "buildLibsFromSource": {
22
+ "type": "boolean",
23
+ "description": "Read buildable libraries from source instead of building them separately.",
24
+ "default": true
25
+ },
26
+ "skipTypeCheck": {
27
+ "type": "boolean",
28
+ "description": "Skip type-checking via TypeScript. Skipping type-checking speeds up the build but type errors are not caught.",
29
+ "default": false
30
+ },
21
31
  "base": {
22
32
  "type": "string",
23
33
  "description": "Base public path when served in development or production.",
@@ -17,11 +17,10 @@ const _extends = require("@swc/helpers/_/_extends");
17
17
  require("dotenv/config");
18
18
  const _vite = require("vite");
19
19
  const _optionsutils = require("../../utils/options-utils");
20
- const _internal = require("@nx/js/src/internal");
21
- const _path = require("path");
20
+ const _executorutils = require("../../utils/executor-utils");
22
21
  async function* viteDevServerExecutor(options, context) {
23
22
  const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
24
- (0, _internal.registerTsConfigPaths)((0, _path.resolve)(projectRoot, 'tsconfig.json'));
23
+ (0, _executorutils.registerPaths)(projectRoot, options, context);
25
24
  // Retrieve the option for the configured buildTarget.
26
25
  const buildTargetOptions = (0, _optionsutils.getNxTargetOptions)(options.buildTarget, context);
27
26
  // Merge the options from the build and dev-serve targets.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/executors/dev-server/dev-server.impl.ts"],"sourcesContent":["import 'dotenv/config';\nimport { ExecutorContext } from '@nx/devkit';\nimport { createServer, InlineConfig, mergeConfig, ViteDevServer } from 'vite';\n\nimport {\n getViteSharedConfig,\n getNxTargetOptions,\n getViteServerOptions,\n getViteBuildOptions,\n} from '../../utils/options-utils';\n\nimport { ViteDevServerExecutorOptions } from './schema';\nimport { ViteBuildExecutorOptions } from '../build/schema';\nimport { registerTsConfigPaths } from '@nx/js/src/internal';\nimport { resolve } from 'path';\n\nexport async function* viteDevServerExecutor(\n options: ViteDevServerExecutorOptions,\n context: ExecutorContext\n): AsyncGenerator<{ success: boolean; baseUrl: string }> {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n registerTsConfigPaths(resolve(projectRoot, 'tsconfig.json'));\n\n // Retrieve the option for the configured buildTarget.\n const buildTargetOptions: ViteBuildExecutorOptions = getNxTargetOptions(\n options.buildTarget,\n context\n );\n\n // Merge the options from the build and dev-serve targets.\n // The latter takes precedence.\n const mergedOptions = {\n ...buildTargetOptions,\n ...options,\n };\n\n // Add the server specific configuration.\n const serverConfig: InlineConfig = mergeConfig(\n getViteSharedConfig(mergedOptions, options.clearScreen, context),\n {\n build: getViteBuildOptions(mergedOptions, context),\n server: getViteServerOptions(mergedOptions, context),\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\nasync function runViteDevServer(server: ViteDevServer): Promise<void> {\n await server.listen();\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"],"names":["viteDevServerExecutor","options","context","projectRoot","projectsConfigurations","projects","projectName","root","registerTsConfigPaths","resolve","buildTargetOptions","getNxTargetOptions","buildTarget","mergedOptions","serverConfig","mergeConfig","getViteSharedConfig","clearScreen","build","getViteBuildOptions","server","getViteServerOptions","createServer","runViteDevServer","resolvedUrls","local","network","success","baseUrl","e","console","error","Promise","process","once","listen","printUrls","processOnExit","close"],"mappings":";;;;;;;;IAgBuBA,qBAAqB;eAArBA;;IAuEvB,OAAqC;eAArC;;;;QAvFO;sBAEgE;8BAOhE;0BAI+B;sBACd;AAEjB,gBAAgBA,sBACrBC,OAAqC,EACrCC,OAAwB,EAC+B;IACvD,MAAMC,cACJD,QAAQE,sBAAsB,CAACC,QAAQ,CAACH,QAAQI,WAAW,CAAC,CAACC,IAAI;IAEnEC,IAAAA,+BAAqB,EAACC,IAAAA,aAAO,EAACN,aAAa;IAE3C,sDAAsD;IACtD,MAAMO,qBAA+CC,IAAAA,gCAAkB,EACrEV,QAAQW,WAAW,EACnBV;IAGF,0DAA0D;IAC1D,+BAA+B;IAC/B,MAAMW,gBAAgB,eACjBH,oBACAT;IAGL,yCAAyC;IACzC,MAAMa,eAA6BC,IAAAA,iBAAW,EAC5CC,IAAAA,iCAAmB,EAACH,eAAeZ,QAAQgB,WAAW,EAAEf,UACxD;QACEgB,OAAOC,IAAAA,iCAAmB,EAACN,eAAeX;QAC1CkB,QAAQC,IAAAA,kCAAoB,EAACR,eAAeX;IAC9C;IAGF,IAAI;QACF,MAAMkB,SAAS,MAAME,IAAAA,kBAAY,EAACR;QAClC,MAAMS,iBAAiBH;QACvB,MAAMI,eAAe;eAChBJ,OAAOI,YAAY,CAACC,KAAK;eACzBL,OAAOI,YAAY,CAACE,OAAO;SAC/B;YAIUF;QAFX,MAAM;YACJG,SAAS,IAAI;YACbC,SAASJ,CAAAA,iBAAAA,YAAY,CAAC,EAAE,YAAfA,iBAAmB,EAAE;QAChC;IACF,EAAE,OAAOK,GAAG;QACVC,QAAQC,KAAK,CAACF;QACd,MAAM;YACJF,SAAS,KAAK;YACdC,SAAS;QACX;IACF;IAEA,MAAM,IAAII,QAAc,CAACvB,UAAY;QACnCwB,QAAQC,IAAI,CAAC,UAAU,IAAMzB;QAC7BwB,QAAQC,IAAI,CAAC,WAAW,IAAMzB;QAC9BwB,QAAQC,IAAI,CAAC,QAAQ,IAAMzB;IAC7B;AACF;AAEA,eAAec,iBAAiBH,MAAqB,EAAiB;IACpE,MAAMA,OAAOe,MAAM;IACnBf,OAAOgB,SAAS;IAEhB,MAAMC,gBAAgB,UAAY;QAChC,MAAMjB,OAAOkB,KAAK;IACpB;IAEAL,QAAQC,IAAI,CAAC,UAAUG;IACvBJ,QAAQC,IAAI,CAAC,WAAWG;IACxBJ,QAAQC,IAAI,CAAC,QAAQG;AACvB;MAEA,WAAerC"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/executors/dev-server/dev-server.impl.ts"],"sourcesContent":["import 'dotenv/config';\nimport { ExecutorContext } from '@nx/devkit';\nimport { createServer, InlineConfig, mergeConfig, ViteDevServer } from 'vite';\n\nimport {\n getViteSharedConfig,\n getNxTargetOptions,\n getViteServerOptions,\n getViteBuildOptions,\n} from '../../utils/options-utils';\n\nimport { ViteDevServerExecutorOptions } from './schema';\nimport { ViteBuildExecutorOptions } from '../build/schema';\nimport { registerPaths } from '../../utils/executor-utils';\n\nexport async function* viteDevServerExecutor(\n options: ViteDevServerExecutorOptions,\n context: ExecutorContext\n): AsyncGenerator<{ success: boolean; baseUrl: string }> {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n registerPaths(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 // Merge the options from the build and dev-serve targets.\n // The latter takes precedence.\n const mergedOptions = {\n ...buildTargetOptions,\n ...options,\n };\n\n // Add the server specific configuration.\n const serverConfig: InlineConfig = mergeConfig(\n getViteSharedConfig(mergedOptions, options.clearScreen, context),\n {\n build: getViteBuildOptions(mergedOptions, context),\n server: getViteServerOptions(mergedOptions, context),\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\nasync function runViteDevServer(server: ViteDevServer): Promise<void> {\n await server.listen();\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"],"names":["viteDevServerExecutor","options","context","projectRoot","projectsConfigurations","projects","projectName","root","registerPaths","buildTargetOptions","getNxTargetOptions","buildTarget","mergedOptions","serverConfig","mergeConfig","getViteSharedConfig","clearScreen","build","getViteBuildOptions","server","getViteServerOptions","createServer","runViteDevServer","resolvedUrls","local","network","success","baseUrl","e","console","error","Promise","resolve","process","once","listen","printUrls","processOnExit","close"],"mappings":";;;;;;;;IAeuBA,qBAAqB;eAArBA;;IAuEvB,OAAqC;eAArC;;;;QAtFO;sBAEgE;8BAOhE;+BAIuB;AAEvB,gBAAgBA,sBACrBC,OAAqC,EACrCC,OAAwB,EAC+B;IACvD,MAAMC,cACJD,QAAQE,sBAAsB,CAACC,QAAQ,CAACH,QAAQI,WAAW,CAAC,CAACC,IAAI;IAEnEC,IAAAA,4BAAa,EAACL,aAAaF,SAASC;IAEpC,sDAAsD;IACtD,MAAMO,qBAA+CC,IAAAA,gCAAkB,EACrET,QAAQU,WAAW,EACnBT;IAGF,0DAA0D;IAC1D,+BAA+B;IAC/B,MAAMU,gBAAgB,eACjBH,oBACAR;IAGL,yCAAyC;IACzC,MAAMY,eAA6BC,IAAAA,iBAAW,EAC5CC,IAAAA,iCAAmB,EAACH,eAAeX,QAAQe,WAAW,EAAEd,UACxD;QACEe,OAAOC,IAAAA,iCAAmB,EAACN,eAAeV;QAC1CiB,QAAQC,IAAAA,kCAAoB,EAACR,eAAeV;IAC9C;IAGF,IAAI;QACF,MAAMiB,SAAS,MAAME,IAAAA,kBAAY,EAACR;QAClC,MAAMS,iBAAiBH;QACvB,MAAMI,eAAe;eAChBJ,OAAOI,YAAY,CAACC,KAAK;eACzBL,OAAOI,YAAY,CAACE,OAAO;SAC/B;YAIUF;QAFX,MAAM;YACJG,SAAS,IAAI;YACbC,SAASJ,CAAAA,iBAAAA,YAAY,CAAC,EAAE,YAAfA,iBAAmB,EAAE;QAChC;IACF,EAAE,OAAOK,GAAG;QACVC,QAAQC,KAAK,CAACF;QACd,MAAM;YACJF,SAAS,KAAK;YACdC,SAAS;QACX;IACF;IAEA,MAAM,IAAII,QAAc,CAACC,UAAY;QACnCC,QAAQC,IAAI,CAAC,UAAU,IAAMF;QAC7BC,QAAQC,IAAI,CAAC,WAAW,IAAMF;QAC9BC,QAAQC,IAAI,CAAC,QAAQ,IAAMF;IAC7B;AACF;AAEA,eAAeV,iBAAiBH,MAAqB,EAAiB;IACpE,MAAMA,OAAOgB,MAAM;IACnBhB,OAAOiB,SAAS;IAEhB,MAAMC,gBAAgB,UAAY;QAChC,MAAMlB,OAAOmB,KAAK;IACpB;IAEAL,QAAQC,IAAI,CAAC,UAAUG;IACvBJ,QAAQC,IAAI,CAAC,WAAWG;IACxBJ,QAAQC,IAAI,CAAC,QAAQG;AACvB;MAEA,WAAerC"}
@@ -1,5 +1,6 @@
1
1
  export interface ViteDevServerExecutorOptions {
2
2
  buildTarget: string;
3
+ buildLibsFromSource?: boolean;
3
4
  proxyConfig?: string;
4
5
  port?: number;
5
6
  host?: string | boolean;
@@ -21,6 +21,11 @@
21
21
  "description": "Target which builds the application. Only used to retrieve the configuration as the dev-server does not build the code.",
22
22
  "x-priority": "important"
23
23
  },
24
+ "buildLibsFromSource": {
25
+ "type": "boolean",
26
+ "description": "Read buildable libraries from source instead of building them separately.",
27
+ "default": true
28
+ },
24
29
  "proxyConfig": {
25
30
  "type": "string",
26
31
  "description": "Path to the proxy configuration file.",
@@ -55,7 +55,7 @@ async function* vitestExecutor(options, context) {
55
55
  (0, _internal.registerTsConfigPaths)((0, _path.resolve)(_devkit.workspaceRoot, projectRoot, 'tsconfig.json'));
56
56
  const { startVitest } = await Function('return import("vitest/node")')();
57
57
  const nxReporter = new NxReporter(options.watch);
58
- const settings = await getSettings(options, context);
58
+ const settings = await getSettings(options, context, projectRoot);
59
59
  settings.reporters.push(nxReporter);
60
60
  const cliFilters = options.testFile ? [
61
61
  options.testFile
@@ -83,9 +83,8 @@ async function* vitestExecutor(options, context) {
83
83
  success: !hasErrors
84
84
  };
85
85
  }
86
- async function getSettings(options, context) {
86
+ async function getSettings(options, context, projectRoot) {
87
87
  var _resolved_config, _resolved_config1, _resolved_config_test, _resolved_config2, _resolved_config_test1;
88
- const projectRoot = context.projectGraph.nodes[context.projectName].data.root;
89
88
  const offset = (0, _path.relative)(_devkit.workspaceRoot, context.cwd);
90
89
  // if reportsDirectory is not provided vitest will remove all files in the project root
91
90
  // when coverage is enabled in the vite.config.ts
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/executors/test/vitest.impl.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n logger,\n stripIndents,\n workspaceRoot,\n} from '@nx/devkit';\nimport { CoverageOptions, File, Reporter } from 'vitest';\nimport { loadConfigFromFile } from 'vite';\nimport { VitestExecutorOptions } from './schema';\nimport { relative, resolve } from 'path';\nimport { existsSync } from 'fs';\nimport { registerTsConfigPaths } from '@nx/js/src/internal';\n\nclass NxReporter implements Reporter {\n deferred: {\n promise: Promise<boolean>;\n resolve: (val: boolean) => void;\n };\n\n constructor(private watch: boolean) {\n this.setupDeferred();\n }\n\n async *[Symbol.asyncIterator]() {\n do {\n const hasErrors = await this.deferred.promise;\n yield { hasErrors };\n this.setupDeferred();\n } while (this.watch);\n }\n\n private setupDeferred() {\n let resolve: (val: boolean) => void;\n this.deferred = {\n promise: new Promise((res) => {\n resolve = res;\n }),\n resolve,\n };\n }\n\n onFinished(files: File[], errors?: unknown[]) {\n const hasErrors =\n files.some((f) => f.result?.state === 'fail') || errors?.length > 0;\n this.deferred.resolve(hasErrors);\n }\n}\n\nexport async function* vitestExecutor(\n options: VitestExecutorOptions,\n context: ExecutorContext\n) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n registerTsConfigPaths(resolve(workspaceRoot, projectRoot, 'tsconfig.json'));\n\n const { startVitest } = await (Function(\n 'return import(\"vitest/node\")'\n )() as Promise<typeof import('vitest/node')>);\n\n const nxReporter = new NxReporter(options.watch);\n const settings = await getSettings(options, context);\n settings.reporters.push(nxReporter);\n const cliFilters = options.testFile ? [options.testFile] : [];\n\n const ctx = await startVitest(options.mode, cliFilters, settings);\n\n let hasErrors = false;\n\n const processExit = () => {\n ctx.exit();\n if (hasErrors) {\n process.exit(1);\n } else {\n process.exit(0);\n }\n };\n\n if (options.watch) {\n process.on('SIGINT', processExit);\n process.on('SIGTERM', processExit);\n process.on('exit', processExit);\n }\n\n for await (const report of nxReporter) {\n // vitest sets the exitCode = 1 when code coverage isn't met\n hasErrors =\n report.hasErrors || (process.exitCode && process.exitCode !== 0);\n }\n\n return {\n success: !hasErrors,\n };\n}\n\nasync function getSettings(\n options: VitestExecutorOptions,\n context: ExecutorContext\n) {\n const projectRoot = context.projectGraph.nodes[context.projectName].data.root;\n const offset = relative(workspaceRoot, context.cwd);\n // if reportsDirectory is not provided vitest will remove all files in the project root\n // when coverage is enabled in the vite.config.ts\n const coverage: CoverageOptions = options.reportsDirectory\n ? {\n enabled: options.coverage,\n reportsDirectory: options.reportsDirectory,\n provider: 'c8',\n }\n : ({} as CoverageOptions);\n\n const viteConfigPath = options.config\n ? options.config // config is expected to be from the workspace root\n : findViteConfig(joinPathFragments(context.root, projectRoot));\n\n const resolvedProjectRoot = resolve(workspaceRoot, projectRoot);\n const resolvedViteConfigPath = resolve(\n workspaceRoot,\n projectRoot,\n relative(resolvedProjectRoot, viteConfigPath)\n );\n\n const resolved = await loadConfigFromFile(\n {\n mode: options.mode,\n command: 'serve',\n },\n resolvedViteConfigPath,\n resolvedProjectRoot\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 }\nSome settings may not be applied as expected.\nYou can manually set the config in the project, ${\n context.projectName\n }, configuration.\n `);\n }\n\n const settings = {\n ...options,\n // when running nx from the project root, the root will get appended to the cwd.\n // creating an invalid path and no tests will be found.\n // instead if we are not at the root, let the cwd be root.\n root: offset === '' ? resolvedProjectRoot : workspaceRoot,\n config: resolvedViteConfigPath,\n reporters: [\n ...(options.reporters ?? []),\n ...((resolved?.config?.['test']?.reporters as string[]) ?? []),\n 'default',\n ] as (string | Reporter)[],\n coverage: { ...coverage, ...resolved?.config?.['test']?.coverage },\n };\n\n return settings;\n}\n\nfunction findViteConfig(projectRootFullPath: string): string {\n const allowsExt = ['js', 'mjs', 'ts', 'cjs', 'mts', 'cts'];\n\n for (const ext of allowsExt) {\n if (\n existsSync(joinPathFragments(projectRootFullPath, `vite.config.${ext}`))\n ) {\n return joinPathFragments(projectRootFullPath, `vite.config.${ext}`);\n }\n }\n}\n\nexport default vitestExecutor;\n"],"names":["vitestExecutor","NxReporter","Symbol","asyncIterator","hasErrors","deferred","promise","setupDeferred","watch","resolve","Promise","res","onFinished","files","errors","some","f","result","state","length","constructor","options","context","projectRoot","projectsConfigurations","projects","projectName","root","registerTsConfigPaths","workspaceRoot","startVitest","Function","nxReporter","settings","getSettings","reporters","push","cliFilters","testFile","ctx","mode","processExit","exit","process","on","report","exitCode","success","resolved","projectGraph","nodes","data","offset","relative","cwd","coverage","reportsDirectory","enabled","provider","viteConfigPath","config","findViteConfig","joinPathFragments","resolvedProjectRoot","resolvedViteConfigPath","loadConfigFromFile","command","logger","warn","stripIndents","path","projectRootFullPath","allowsExt","ext","existsSync"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/executors/test/vitest.impl.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n logger,\n stripIndents,\n workspaceRoot,\n} from '@nx/devkit';\nimport { CoverageOptions, File, Reporter } from 'vitest';\nimport { loadConfigFromFile } from 'vite';\nimport { VitestExecutorOptions } from './schema';\nimport { relative, resolve } from 'path';\nimport { existsSync } from 'fs';\nimport { registerTsConfigPaths } from '@nx/js/src/internal';\n\nclass NxReporter implements Reporter {\n deferred: {\n promise: Promise<boolean>;\n resolve: (val: boolean) => void;\n };\n\n constructor(private watch: boolean) {\n this.setupDeferred();\n }\n\n async *[Symbol.asyncIterator]() {\n do {\n const hasErrors = await this.deferred.promise;\n yield { hasErrors };\n this.setupDeferred();\n } while (this.watch);\n }\n\n private setupDeferred() {\n let resolve: (val: boolean) => void;\n this.deferred = {\n promise: new Promise((res) => {\n resolve = res;\n }),\n resolve,\n };\n }\n\n onFinished(files: File[], errors?: unknown[]) {\n const hasErrors =\n files.some((f) => f.result?.state === 'fail') || errors?.length > 0;\n this.deferred.resolve(hasErrors);\n }\n}\n\nexport async function* vitestExecutor(\n options: VitestExecutorOptions,\n context: ExecutorContext\n) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n registerTsConfigPaths(resolve(workspaceRoot, projectRoot, 'tsconfig.json'));\n\n const { startVitest } = await (Function(\n 'return import(\"vitest/node\")'\n )() as Promise<typeof import('vitest/node')>);\n\n const nxReporter = new NxReporter(options.watch);\n const settings = await getSettings(options, context, projectRoot);\n settings.reporters.push(nxReporter);\n const cliFilters = options.testFile ? [options.testFile] : [];\n\n const ctx = await startVitest(options.mode, cliFilters, settings);\n\n let hasErrors = false;\n\n const processExit = () => {\n ctx.exit();\n if (hasErrors) {\n process.exit(1);\n } else {\n process.exit(0);\n }\n };\n\n if (options.watch) {\n process.on('SIGINT', processExit);\n process.on('SIGTERM', processExit);\n process.on('exit', processExit);\n }\n\n for await (const report of nxReporter) {\n // vitest sets the exitCode = 1 when code coverage isn't met\n hasErrors =\n report.hasErrors || (process.exitCode && process.exitCode !== 0);\n }\n\n return {\n success: !hasErrors,\n };\n}\n\nasync function getSettings(\n options: VitestExecutorOptions,\n context: ExecutorContext,\n projectRoot: string\n) {\n const offset = relative(workspaceRoot, context.cwd);\n // if reportsDirectory is not provided vitest will remove all files in the project root\n // when coverage is enabled in the vite.config.ts\n const coverage: CoverageOptions = options.reportsDirectory\n ? {\n enabled: options.coverage,\n reportsDirectory: options.reportsDirectory,\n provider: 'c8',\n }\n : ({} as CoverageOptions);\n\n const viteConfigPath = options.config\n ? options.config // config is expected to be from the workspace root\n : findViteConfig(joinPathFragments(context.root, projectRoot));\n\n const resolvedProjectRoot = resolve(workspaceRoot, projectRoot);\n const resolvedViteConfigPath = resolve(\n workspaceRoot,\n projectRoot,\n relative(resolvedProjectRoot, viteConfigPath)\n );\n\n const resolved = await loadConfigFromFile(\n {\n mode: options.mode,\n command: 'serve',\n },\n resolvedViteConfigPath,\n resolvedProjectRoot\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 }\nSome settings may not be applied as expected.\nYou can manually set the config in the project, ${\n context.projectName\n }, configuration.\n `);\n }\n\n const settings = {\n ...options,\n // when running nx from the project root, the root will get appended to the cwd.\n // creating an invalid path and no tests will be found.\n // instead if we are not at the root, let the cwd be root.\n root: offset === '' ? resolvedProjectRoot : workspaceRoot,\n config: resolvedViteConfigPath,\n reporters: [\n ...(options.reporters ?? []),\n ...((resolved?.config?.['test']?.reporters as string[]) ?? []),\n 'default',\n ] as (string | Reporter)[],\n coverage: { ...coverage, ...resolved?.config?.['test']?.coverage },\n };\n\n return settings;\n}\n\nfunction findViteConfig(projectRootFullPath: string): string {\n const allowsExt = ['js', 'mjs', 'ts', 'cjs', 'mts', 'cts'];\n\n for (const ext of allowsExt) {\n if (\n existsSync(joinPathFragments(projectRootFullPath, `vite.config.${ext}`))\n ) {\n return joinPathFragments(projectRootFullPath, `vite.config.${ext}`);\n }\n }\n}\n\nexport default vitestExecutor;\n"],"names":["vitestExecutor","NxReporter","Symbol","asyncIterator","hasErrors","deferred","promise","setupDeferred","watch","resolve","Promise","res","onFinished","files","errors","some","f","result","state","length","constructor","options","context","projectRoot","projectsConfigurations","projects","projectName","root","registerTsConfigPaths","workspaceRoot","startVitest","Function","nxReporter","settings","getSettings","reporters","push","cliFilters","testFile","ctx","mode","processExit","exit","process","on","report","exitCode","success","resolved","offset","relative","cwd","coverage","reportsDirectory","enabled","provider","viteConfigPath","config","findViteConfig","joinPathFragments","resolvedProjectRoot","resolvedViteConfigPath","loadConfigFromFile","command","logger","warn","stripIndents","path","projectRootFullPath","allowsExt","ext","existsSync"],"mappings":"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"}
@@ -21,7 +21,9 @@ const _generatorutils = require("../../utils/generator-utils");
21
21
  const _init = require("../init/init");
22
22
  const _vitestgenerator = require("../vitest/vitest-generator");
23
23
  async function viteConfigurationGenerator(tree, schema) {
24
- var _schema;
24
+ var _schema, // Setting default to jsdom since it is the most common use case (React, Web).
25
+ // The @nx/js:lib generator specifically sets this to node to be more generic.
26
+ _schema1;
25
27
  const tasks = [];
26
28
  const { targets , projectType , root } = (0, _devkit.readProjectConfiguration)(tree, schema.project);
27
29
  let buildTargetName = 'build';
@@ -29,6 +31,8 @@ async function viteConfigurationGenerator(tree, schema) {
29
31
  let testTargetName = 'test';
30
32
  var _includeLib;
31
33
  (_includeLib = (_schema = schema).includeLib) != null ? _includeLib : _schema.includeLib = projectType === 'library';
34
+ var _testEnvironment;
35
+ (_testEnvironment = (_schema1 = schema).testEnvironment) != null ? _testEnvironment : _schema1.testEnvironment = 'jsdom';
32
36
  /**
33
37
  * This is for when we are converting an existing project
34
38
  * to use the vite executors.
@@ -99,7 +103,8 @@ async function viteConfigurationGenerator(tree, schema) {
99
103
  const initTask = await (0, _init.default)(tree, {
100
104
  uiFramework: schema.uiFramework,
101
105
  includeLib: schema.includeLib,
102
- compiler: schema.compiler
106
+ compiler: schema.compiler,
107
+ testEnvironment: schema.testEnvironment
103
108
  });
104
109
  tasks.push(initTask);
105
110
  if (!projectAlreadyHasViteTargets.build) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/generators/configuration/configuration.ts"],"sourcesContent":["import {\n convertNxGenerator,\n formatFiles,\n GeneratorCallback,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n} from '@nx/devkit';\n\nimport {\n addOrChangeBuildTarget,\n addOrChangeServeTarget,\n addPreviewTarget,\n createOrEditViteConfig,\n deleteWebpackConfig,\n editTsConfig,\n findExistingTargetsInProject,\n handleUnknownExecutors,\n handleUnsupportedUserProvidedTargets,\n moveAndEditIndexHtml,\n TargetFlags,\n UserProvidedTargetName,\n} from '../../utils/generator-utils';\n\nimport initGenerator from '../init/init';\nimport vitestGenerator from '../vitest/vitest-generator';\nimport { ViteConfigurationGeneratorSchema } from './schema';\n\nexport async function viteConfigurationGenerator(\n tree: Tree,\n schema: ViteConfigurationGeneratorSchema\n) {\n const tasks: GeneratorCallback[] = [];\n\n const { targets, projectType, root } = readProjectConfiguration(\n tree,\n schema.project\n );\n let buildTargetName = 'build';\n let serveTargetName = 'serve';\n let testTargetName = 'test';\n\n schema.includeLib ??= projectType === 'library';\n\n /**\n * This is for when we are converting an existing project\n * to use the vite executors.\n */\n let projectAlreadyHasViteTargets: TargetFlags = {};\n\n if (!schema.newProject) {\n const userProvidedTargetName: UserProvidedTargetName = {\n build: schema.buildTarget,\n serve: schema.serveTarget,\n test: schema.testTarget,\n };\n\n const {\n validFoundTargetName,\n projectContainsUnsupportedExecutor,\n userProvidedTargetIsUnsupported,\n alreadyHasNxViteTargets,\n } = findExistingTargetsInProject(targets, userProvidedTargetName);\n projectAlreadyHasViteTargets = alreadyHasNxViteTargets;\n /**\n * This means that we only found unsupported build targets in that project.\n * The only way that buildTarget is defined, means that it is supported.\n *\n * If the `unsupported` flag was false, it would mean that we did not find\n * a build target at all, so we can create a new one.\n *\n * So we only throw if we found a target, but it is unsupported.\n */\n if (!validFoundTargetName.build && projectContainsUnsupportedExecutor) {\n throw new Error(\n `The project ${schema.project} cannot be converted to use the @nx/vite executors.`\n );\n }\n\n if (\n alreadyHasNxViteTargets.build &&\n (alreadyHasNxViteTargets.serve || projectType === 'library') &&\n alreadyHasNxViteTargets.test\n ) {\n throw new Error(\n `The project ${schema.project} is already configured to use the @nx/vite executors.\n Please try a different project, or remove the existing targets \n and re-run this generator to reset the existing Vite Configuration.\n `\n );\n }\n\n /**\n * This means that we did not find any supported executors\n * so we don't have any valid target names.\n *\n * However, the executors that we may have found are not in the\n * list of the specifically unsupported executors either.\n *\n * So, we should warn the user about it.\n */\n\n if (\n !projectContainsUnsupportedExecutor &&\n !validFoundTargetName.build &&\n !validFoundTargetName.serve &&\n !validFoundTargetName.test\n ) {\n await handleUnknownExecutors(schema.project);\n }\n\n /**\n * There is a possibility at this stage that the user has provided\n * targets with unsupported executors.\n * We keep track here of which of the targets that the user provided\n * are unsupported.\n * We do this with the `userProvidedTargetIsUnsupported` object,\n * which contains flags for each target (whether it is supported or not).\n *\n * We also keep track of the targets that we found in the project,\n * through the findExistingTargetsInProject function, which returns\n * targets for build/serve/test that use supported executors, and\n * can be converted to use the vite executors. These are the\n * kept in the validFoundTargetName object.\n */\n await handleUnsupportedUserProvidedTargets(\n userProvidedTargetIsUnsupported,\n userProvidedTargetName,\n validFoundTargetName\n );\n\n /**\n * Once the user is at this stage, then they can go ahead and convert.\n */\n\n buildTargetName = validFoundTargetName.build ?? buildTargetName;\n serveTargetName = validFoundTargetName.serve ?? serveTargetName;\n\n if (projectType === 'application') {\n moveAndEditIndexHtml(tree, schema, buildTargetName);\n }\n\n deleteWebpackConfig(\n tree,\n root,\n targets?.[buildTargetName]?.options?.webpackConfig\n );\n\n editTsConfig(tree, schema);\n }\n\n const initTask = await initGenerator(tree, {\n uiFramework: schema.uiFramework,\n includeLib: schema.includeLib,\n compiler: schema.compiler,\n });\n tasks.push(initTask);\n\n if (!projectAlreadyHasViteTargets.build) {\n addOrChangeBuildTarget(tree, schema, buildTargetName);\n }\n\n if (!schema.includeLib) {\n if (!projectAlreadyHasViteTargets.serve) {\n addOrChangeServeTarget(tree, schema, serveTargetName);\n }\n if (!projectAlreadyHasViteTargets.preview) {\n addPreviewTarget(tree, schema, serveTargetName);\n }\n }\n\n createOrEditViteConfig(tree, schema, false, projectAlreadyHasViteTargets);\n\n if (schema.includeVitest) {\n const vitestTask = await vitestGenerator(tree, {\n project: schema.project,\n uiFramework: schema.uiFramework,\n inSourceTests: schema.inSourceTests,\n coverageProvider: 'c8',\n skipViteConfig: true,\n testTarget: testTargetName,\n skipFormat: true,\n });\n tasks.push(vitestTask);\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nexport default viteConfigurationGenerator;\nexport const configurationSchematic = convertNxGenerator(\n viteConfigurationGenerator\n);\n"],"names":["viteConfigurationGenerator","configurationSchematic","tree","schema","tasks","targets","projectType","root","readProjectConfiguration","project","buildTargetName","serveTargetName","testTargetName","includeLib","projectAlreadyHasViteTargets","newProject","userProvidedTargetName","build","buildTarget","serve","serveTarget","test","testTarget","validFoundTargetName","projectContainsUnsupportedExecutor","userProvidedTargetIsUnsupported","alreadyHasNxViteTargets","findExistingTargetsInProject","Error","handleUnknownExecutors","handleUnsupportedUserProvidedTargets","moveAndEditIndexHtml","deleteWebpackConfig","options","webpackConfig","editTsConfig","initTask","initGenerator","uiFramework","compiler","push","addOrChangeBuildTarget","addOrChangeServeTarget","preview","addPreviewTarget","createOrEditViteConfig","includeVitest","vitestTask","vitestGenerator","inSourceTests","coverageProvider","skipViteConfig","skipFormat","formatFiles","runTasksInSerial","convertNxGenerator"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/generators/configuration/configuration.ts"],"sourcesContent":["import {\n convertNxGenerator,\n formatFiles,\n GeneratorCallback,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n} from '@nx/devkit';\n\nimport {\n addOrChangeBuildTarget,\n addOrChangeServeTarget,\n addPreviewTarget,\n createOrEditViteConfig,\n deleteWebpackConfig,\n editTsConfig,\n findExistingTargetsInProject,\n handleUnknownExecutors,\n handleUnsupportedUserProvidedTargets,\n moveAndEditIndexHtml,\n TargetFlags,\n UserProvidedTargetName,\n} from '../../utils/generator-utils';\n\nimport initGenerator from '../init/init';\nimport vitestGenerator from '../vitest/vitest-generator';\nimport { ViteConfigurationGeneratorSchema } from './schema';\n\nexport async function viteConfigurationGenerator(\n tree: Tree,\n schema: ViteConfigurationGeneratorSchema\n) {\n const tasks: GeneratorCallback[] = [];\n\n const { targets, projectType, root } = readProjectConfiguration(\n tree,\n schema.project\n );\n let buildTargetName = 'build';\n let serveTargetName = 'serve';\n let testTargetName = 'test';\n\n schema.includeLib ??= projectType === 'library';\n\n // Setting default to jsdom since it is the most common use case (React, Web).\n // The @nx/js:lib generator specifically sets this to node to be more generic.\n schema.testEnvironment ??= 'jsdom';\n\n /**\n * This is for when we are converting an existing project\n * to use the vite executors.\n */\n let projectAlreadyHasViteTargets: TargetFlags = {};\n\n if (!schema.newProject) {\n const userProvidedTargetName: UserProvidedTargetName = {\n build: schema.buildTarget,\n serve: schema.serveTarget,\n test: schema.testTarget,\n };\n\n const {\n validFoundTargetName,\n projectContainsUnsupportedExecutor,\n userProvidedTargetIsUnsupported,\n alreadyHasNxViteTargets,\n } = findExistingTargetsInProject(targets, userProvidedTargetName);\n projectAlreadyHasViteTargets = alreadyHasNxViteTargets;\n /**\n * This means that we only found unsupported build targets in that project.\n * The only way that buildTarget is defined, means that it is supported.\n *\n * If the `unsupported` flag was false, it would mean that we did not find\n * a build target at all, so we can create a new one.\n *\n * So we only throw if we found a target, but it is unsupported.\n */\n if (!validFoundTargetName.build && projectContainsUnsupportedExecutor) {\n throw new Error(\n `The project ${schema.project} cannot be converted to use the @nx/vite executors.`\n );\n }\n\n if (\n alreadyHasNxViteTargets.build &&\n (alreadyHasNxViteTargets.serve || projectType === 'library') &&\n alreadyHasNxViteTargets.test\n ) {\n throw new Error(\n `The project ${schema.project} is already configured to use the @nx/vite executors.\n Please try a different project, or remove the existing targets \n and re-run this generator to reset the existing Vite Configuration.\n `\n );\n }\n\n /**\n * This means that we did not find any supported executors\n * so we don't have any valid target names.\n *\n * However, the executors that we may have found are not in the\n * list of the specifically unsupported executors either.\n *\n * So, we should warn the user about it.\n */\n\n if (\n !projectContainsUnsupportedExecutor &&\n !validFoundTargetName.build &&\n !validFoundTargetName.serve &&\n !validFoundTargetName.test\n ) {\n await handleUnknownExecutors(schema.project);\n }\n\n /**\n * There is a possibility at this stage that the user has provided\n * targets with unsupported executors.\n * We keep track here of which of the targets that the user provided\n * are unsupported.\n * We do this with the `userProvidedTargetIsUnsupported` object,\n * which contains flags for each target (whether it is supported or not).\n *\n * We also keep track of the targets that we found in the project,\n * through the findExistingTargetsInProject function, which returns\n * targets for build/serve/test that use supported executors, and\n * can be converted to use the vite executors. These are the\n * kept in the validFoundTargetName object.\n */\n await handleUnsupportedUserProvidedTargets(\n userProvidedTargetIsUnsupported,\n userProvidedTargetName,\n validFoundTargetName\n );\n\n /**\n * Once the user is at this stage, then they can go ahead and convert.\n */\n\n buildTargetName = validFoundTargetName.build ?? buildTargetName;\n serveTargetName = validFoundTargetName.serve ?? serveTargetName;\n\n if (projectType === 'application') {\n moveAndEditIndexHtml(tree, schema, buildTargetName);\n }\n\n deleteWebpackConfig(\n tree,\n root,\n targets?.[buildTargetName]?.options?.webpackConfig\n );\n\n editTsConfig(tree, schema);\n }\n\n const initTask = await initGenerator(tree, {\n uiFramework: schema.uiFramework,\n includeLib: schema.includeLib,\n compiler: schema.compiler,\n testEnvironment: schema.testEnvironment,\n });\n tasks.push(initTask);\n\n if (!projectAlreadyHasViteTargets.build) {\n addOrChangeBuildTarget(tree, schema, buildTargetName);\n }\n\n if (!schema.includeLib) {\n if (!projectAlreadyHasViteTargets.serve) {\n addOrChangeServeTarget(tree, schema, serveTargetName);\n }\n if (!projectAlreadyHasViteTargets.preview) {\n addPreviewTarget(tree, schema, serveTargetName);\n }\n }\n\n createOrEditViteConfig(tree, schema, false, projectAlreadyHasViteTargets);\n\n if (schema.includeVitest) {\n const vitestTask = await vitestGenerator(tree, {\n project: schema.project,\n uiFramework: schema.uiFramework,\n inSourceTests: schema.inSourceTests,\n coverageProvider: 'c8',\n skipViteConfig: true,\n testTarget: testTargetName,\n skipFormat: true,\n });\n tasks.push(vitestTask);\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nexport default viteConfigurationGenerator;\nexport const configurationSchematic = convertNxGenerator(\n viteConfigurationGenerator\n);\n"],"names":["viteConfigurationGenerator","configurationSchematic","tree","schema","tasks","targets","projectType","root","readProjectConfiguration","project","buildTargetName","serveTargetName","testTargetName","includeLib","testEnvironment","projectAlreadyHasViteTargets","newProject","userProvidedTargetName","build","buildTarget","serve","serveTarget","test","testTarget","validFoundTargetName","projectContainsUnsupportedExecutor","userProvidedTargetIsUnsupported","alreadyHasNxViteTargets","findExistingTargetsInProject","Error","handleUnknownExecutors","handleUnsupportedUserProvidedTargets","moveAndEditIndexHtml","deleteWebpackConfig","options","webpackConfig","editTsConfig","initTask","initGenerator","uiFramework","compiler","push","addOrChangeBuildTarget","addOrChangeServeTarget","preview","addPreviewTarget","createOrEditViteConfig","includeVitest","vitestTask","vitestGenerator","inSourceTests","coverageProvider","skipViteConfig","skipFormat","formatFiles","runTasksInSerial","convertNxGenerator"],"mappings":"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"}
@@ -10,4 +10,5 @@ export interface ViteConfigurationGeneratorSchema {
10
10
  serveTarget?: string;
11
11
  testTarget?: string;
12
12
  skipFormat?: boolean;
13
+ testEnvironment?: 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string;
13
14
  }
@@ -50,7 +50,7 @@
50
50
  },
51
51
  "serveTarget": {
52
52
  "type": "string",
53
- "description": "The serve target of the project to be transformed to use the @nx/vite:dev-server and @nrwl/vite:preview-server executors."
53
+ "description": "The serve target of the project to be transformed to use the @nx/vite:dev-server and @nx/vite:preview-server executors."
54
54
  },
55
55
  "testTarget": {
56
56
  "type": "string",
@@ -61,6 +61,12 @@
61
61
  "type": "boolean",
62
62
  "default": false,
63
63
  "x-priority": "internal"
64
+ },
65
+ "testEnvironment": {
66
+ "description": "The vitest environment to use. See https://vitest.dev/config/#environment.",
67
+ "type": "string",
68
+ "enum": ["node", "jsdom", "happy-dom", "edge-runtime"],
69
+ "default": "jsdom"
64
70
  }
65
71
  },
66
72
  "examplesFile": "../../../docs/configuration-examples.md"
@@ -32,11 +32,18 @@ function checkDependenciesInstalled(host, schema) {
32
32
  // base deps
33
33
  devDependencies['@nx/vite'] = _versions.nxVersion;
34
34
  devDependencies['vite'] = _versions.viteVersion;
35
- devDependencies['vite-plugin-eslint'] = _versions.vitePluginEslintVersion;
36
35
  devDependencies['vite-tsconfig-paths'] = _versions.viteTsConfigPathsVersion;
37
36
  devDependencies['vitest'] = _versions.vitestVersion;
38
37
  devDependencies['@vitest/ui'] = _versions.vitestUiVersion;
39
- devDependencies['jsdom'] = _versions.jsdomVersion;
38
+ if (schema.testEnvironment === 'jsdom') {
39
+ devDependencies['jsdom'] = _versions.jsdomVersion;
40
+ } else if (schema.testEnvironment === 'happy-dom') {
41
+ devDependencies['happy-dom'] = _versions.happyDomVersion;
42
+ } else if (schema.testEnvironment === 'edge-runtime') {
43
+ devDependencies['@edge-runtime/vm'] = _versions.edgeRuntimeVmVersion;
44
+ } else if (schema.testEnvironment !== 'node') {
45
+ _devkit.logger.info(`A custom environment was provided: ${schema.testEnvironment}. You need to install it manually.`);
46
+ }
40
47
  if (schema.uiFramework === 'react') {
41
48
  if (schema.compiler === 'swc') {
42
49
  devDependencies['@vitejs/plugin-react-swc'] = _versions.vitePluginReactSwcVersion;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/generators/init/init.ts"],"sourcesContent":["import {\n addDependenciesToPackageJson,\n convertNxGenerator,\n readJson,\n readNxJson,\n runTasksInSerial,\n Tree,\n updateJson,\n updateNxJson,\n} from '@nx/devkit';\n\nimport { initGenerator as jsInitGenerator } from '@nx/js';\n\nimport {\n jsdomVersion,\n nxVersion,\n vitePluginDtsVersion,\n vitePluginEslintVersion,\n vitePluginReactVersion,\n vitePluginReactSwcVersion,\n vitestUiVersion,\n vitestVersion,\n viteTsConfigPathsVersion,\n viteVersion,\n} from '../../utils/versions';\nimport { InitGeneratorSchema } from './schema';\n\nfunction checkDependenciesInstalled(host: Tree, schema: InitGeneratorSchema) {\n const packageJson = readJson(host, 'package.json');\n const devDependencies = {};\n const dependencies = {};\n packageJson.dependencies = packageJson.dependencies || {};\n packageJson.devDependencies = packageJson.devDependencies || {};\n\n // base deps\n devDependencies['@nx/vite'] = nxVersion;\n devDependencies['vite'] = viteVersion;\n devDependencies['vite-plugin-eslint'] = vitePluginEslintVersion;\n devDependencies['vite-tsconfig-paths'] = viteTsConfigPathsVersion;\n devDependencies['vitest'] = vitestVersion;\n devDependencies['@vitest/ui'] = vitestUiVersion;\n devDependencies['jsdom'] = jsdomVersion;\n\n if (schema.uiFramework === 'react') {\n if (schema.compiler === 'swc') {\n devDependencies['@vitejs/plugin-react-swc'] = vitePluginReactSwcVersion;\n } else {\n devDependencies['@vitejs/plugin-react'] = vitePluginReactVersion;\n }\n }\n\n if (schema.includeLib) {\n devDependencies['vite-plugin-dts'] = vitePluginDtsVersion;\n }\n\n return addDependenciesToPackageJson(host, dependencies, devDependencies);\n}\n\nfunction moveToDevDependencies(tree: Tree) {\n updateJson(tree, 'package.json', (packageJson) => {\n packageJson.dependencies = packageJson.dependencies || {};\n packageJson.devDependencies = packageJson.devDependencies || {};\n\n if (packageJson.dependencies['@nx/vite']) {\n packageJson.devDependencies['@nx/vite'] =\n packageJson.dependencies['@nx/vite'];\n delete packageJson.dependencies['@nx/vite'];\n }\n return packageJson;\n });\n}\n\nexport function createVitestConfig(tree: Tree) {\n const nxJson = readNxJson(tree);\n\n const productionFileSet = nxJson.namedInputs?.production;\n if (productionFileSet) {\n productionFileSet.push(\n '!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)',\n '!{projectRoot}/tsconfig.spec.json'\n );\n\n nxJson.namedInputs.production = Array.from(new Set(productionFileSet));\n }\n\n nxJson.targetDefaults ??= {};\n nxJson.targetDefaults.test ??= {};\n nxJson.targetDefaults.test.inputs ??= [\n 'default',\n productionFileSet ? '^production' : '^default',\n ];\n\n updateNxJson(tree, nxJson);\n}\n\nexport async function initGenerator(tree: Tree, schema: InitGeneratorSchema) {\n moveToDevDependencies(tree);\n createVitestConfig(tree);\n const tasks = [];\n\n tasks.push(\n await jsInitGenerator(tree, {\n ...schema,\n skipFormat: true,\n })\n );\n\n tasks.push(checkDependenciesInstalled(tree, schema));\n return runTasksInSerial(...tasks);\n}\n\nexport default initGenerator;\nexport const initSchematic = convertNxGenerator(initGenerator);\n"],"names":["createVitestConfig","initGenerator","initSchematic","checkDependenciesInstalled","host","schema","packageJson","readJson","devDependencies","dependencies","nxVersion","viteVersion","vitePluginEslintVersion","viteTsConfigPathsVersion","vitestVersion","vitestUiVersion","jsdomVersion","uiFramework","compiler","vitePluginReactSwcVersion","vitePluginReactVersion","includeLib","vitePluginDtsVersion","addDependenciesToPackageJson","moveToDevDependencies","tree","updateJson","nxJson","readNxJson","productionFileSet","namedInputs","production","push","Array","from","Set","targetDefaults","test","inputs","updateNxJson","tasks","jsInitGenerator","skipFormat","runTasksInSerial","convertNxGenerator"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/generators/init/init.ts"],"sourcesContent":["import {\n addDependenciesToPackageJson,\n convertNxGenerator,\n logger,\n readJson,\n readNxJson,\n runTasksInSerial,\n Tree,\n updateJson,\n updateNxJson,\n} from '@nx/devkit';\n\nimport { initGenerator as jsInitGenerator } from '@nx/js';\n\nimport {\n jsdomVersion,\n nxVersion,\n vitePluginDtsVersion,\n vitePluginReactVersion,\n vitePluginReactSwcVersion,\n vitestUiVersion,\n vitestVersion,\n viteTsConfigPathsVersion,\n viteVersion,\n happyDomVersion,\n edgeRuntimeVmVersion,\n} from '../../utils/versions';\nimport { InitGeneratorSchema } from './schema';\n\nfunction checkDependenciesInstalled(host: Tree, schema: InitGeneratorSchema) {\n const packageJson = readJson(host, 'package.json');\n const devDependencies = {};\n const dependencies = {};\n packageJson.dependencies = packageJson.dependencies || {};\n packageJson.devDependencies = packageJson.devDependencies || {};\n\n // base deps\n devDependencies['@nx/vite'] = nxVersion;\n devDependencies['vite'] = viteVersion;\n devDependencies['vite-tsconfig-paths'] = viteTsConfigPathsVersion;\n devDependencies['vitest'] = vitestVersion;\n devDependencies['@vitest/ui'] = vitestUiVersion;\n\n if (schema.testEnvironment === 'jsdom') {\n devDependencies['jsdom'] = jsdomVersion;\n } else if (schema.testEnvironment === 'happy-dom') {\n devDependencies['happy-dom'] = happyDomVersion;\n } else if (schema.testEnvironment === 'edge-runtime') {\n devDependencies['@edge-runtime/vm'] = edgeRuntimeVmVersion;\n } else if (schema.testEnvironment !== 'node') {\n logger.info(\n `A custom environment was provided: ${schema.testEnvironment}. You need to install it manually.`\n );\n }\n\n if (schema.uiFramework === 'react') {\n if (schema.compiler === 'swc') {\n devDependencies['@vitejs/plugin-react-swc'] = vitePluginReactSwcVersion;\n } else {\n devDependencies['@vitejs/plugin-react'] = vitePluginReactVersion;\n }\n }\n\n if (schema.includeLib) {\n devDependencies['vite-plugin-dts'] = vitePluginDtsVersion;\n }\n\n return addDependenciesToPackageJson(host, dependencies, devDependencies);\n}\n\nfunction moveToDevDependencies(tree: Tree) {\n updateJson(tree, 'package.json', (packageJson) => {\n packageJson.dependencies = packageJson.dependencies || {};\n packageJson.devDependencies = packageJson.devDependencies || {};\n\n if (packageJson.dependencies['@nx/vite']) {\n packageJson.devDependencies['@nx/vite'] =\n packageJson.dependencies['@nx/vite'];\n delete packageJson.dependencies['@nx/vite'];\n }\n return packageJson;\n });\n}\n\nexport function createVitestConfig(tree: Tree) {\n const nxJson = readNxJson(tree);\n\n const productionFileSet = nxJson.namedInputs?.production;\n if (productionFileSet) {\n productionFileSet.push(\n '!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)',\n '!{projectRoot}/tsconfig.spec.json'\n );\n\n nxJson.namedInputs.production = Array.from(new Set(productionFileSet));\n }\n\n nxJson.targetDefaults ??= {};\n nxJson.targetDefaults.test ??= {};\n nxJson.targetDefaults.test.inputs ??= [\n 'default',\n productionFileSet ? '^production' : '^default',\n ];\n\n updateNxJson(tree, nxJson);\n}\n\nexport async function initGenerator(tree: Tree, schema: InitGeneratorSchema) {\n moveToDevDependencies(tree);\n createVitestConfig(tree);\n const tasks = [];\n\n tasks.push(\n await jsInitGenerator(tree, {\n ...schema,\n skipFormat: true,\n })\n );\n\n tasks.push(checkDependenciesInstalled(tree, schema));\n return runTasksInSerial(...tasks);\n}\n\nexport default initGenerator;\nexport const initSchematic = convertNxGenerator(initGenerator);\n"],"names":["createVitestConfig","initGenerator","initSchematic","checkDependenciesInstalled","host","schema","packageJson","readJson","devDependencies","dependencies","nxVersion","viteVersion","viteTsConfigPathsVersion","vitestVersion","vitestUiVersion","testEnvironment","jsdomVersion","happyDomVersion","edgeRuntimeVmVersion","logger","info","uiFramework","compiler","vitePluginReactSwcVersion","vitePluginReactVersion","includeLib","vitePluginDtsVersion","addDependenciesToPackageJson","moveToDevDependencies","tree","updateJson","nxJson","readNxJson","productionFileSet","namedInputs","production","push","Array","from","Set","targetDefaults","test","inputs","updateNxJson","tasks","jsInitGenerator","skipFormat","runTasksInSerial","convertNxGenerator"],"mappings":"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"}
@@ -2,4 +2,5 @@ export interface InitGeneratorSchema {
2
2
  uiFramework: 'react' | 'none';
3
3
  compiler?: 'babel' | 'swc';
4
4
  includeLib?: boolean;
5
+ testEnvironment?: 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string;
5
6
  }
@@ -22,6 +22,12 @@
22
22
  "type": "boolean",
23
23
  "description": "Add dependencies needed to build libraries.",
24
24
  "default": false
25
+ },
26
+ "testEnvironment": {
27
+ "description": "The vitest environment to use. See https://vitest.dev/config/#environment.",
28
+ "type": "string",
29
+ "enum": ["node", "jsdom", "happy-dom", "edge-runtime"],
30
+ "default": "jsdom"
25
31
  }
26
32
  },
27
33
  "examplesFile": "../../../docs/init-examples.md"
@@ -6,4 +6,5 @@ export interface VitestGeneratorSchema {
6
6
  skipViteConfig?: boolean;
7
7
  testTarget?: string;
8
8
  skipFormat?: boolean;
9
+ testEnvironment?: 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string;
9
10
  }
@@ -43,6 +43,11 @@
43
43
  "type": "boolean",
44
44
  "default": false,
45
45
  "x-priority": "internal"
46
+ },
47
+ "testEnvironment": {
48
+ "description": "The vitest environment to use. See https://vitest.dev/config/#environment.",
49
+ "type": "string",
50
+ "enum": ["node", "jsdom", "happy-dom", "edge-runtime"]
46
51
  }
47
52
  },
48
53
  "required": ["project"]
@@ -21,6 +21,7 @@ const _devkit = require("@nx/devkit");
21
21
  const _generatorutils = require("../../utils/generator-utils");
22
22
  const _init = require("../init/init");
23
23
  const _versions = require("../../utils/versions");
24
+ const _js = require("@nx/js");
24
25
  async function vitestGenerator(tree, schema) {
25
26
  const tasks = [];
26
27
  const { targets , root , projectType } = (0, _devkit.readProjectConfiguration)(tree, schema.project);
@@ -28,7 +29,8 @@ async function vitestGenerator(tree, schema) {
28
29
  let testTarget = (_ref = (_schema_testTarget = schema.testTarget) != null ? _schema_testTarget : (0, _generatorutils.findExistingTargetsInProject)(targets).validFoundTargetName.test) != null ? _ref : 'test';
29
30
  (0, _generatorutils.addOrChangeTestTarget)(tree, schema, testTarget);
30
31
  const initTask = await (0, _init.default)(tree, {
31
- uiFramework: schema.uiFramework
32
+ uiFramework: schema.uiFramework,
33
+ testEnvironment: schema.testEnvironment
32
34
  });
33
35
  tasks.push(initTask);
34
36
  if (!schema.skipViteConfig) {
@@ -91,6 +93,7 @@ function updateTsConfig(tree, options, projectRoot) {
91
93
  return json;
92
94
  });
93
95
  }
96
+ (0, _js.addTsLibDependencies)(tree);
94
97
  }
95
98
  }
96
99
  function createFiles(tree, options, projectRoot) {