@nx/vitest 23.1.0-beta.3 → 23.1.0-beta.5

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.
@@ -4,8 +4,9 @@ exports.configurationGenerator = configurationGenerator;
4
4
  exports.configurationGeneratorInternal = configurationGeneratorInternal;
5
5
  const tslib_1 = require("tslib");
6
6
  const devkit_1 = require("@nx/devkit");
7
+ const internal_1 = require("@nx/devkit/internal");
7
8
  const js_1 = require("@nx/js");
8
- const internal_1 = require("@nx/js/internal");
9
+ const internal_2 = require("@nx/js/internal");
9
10
  const path_1 = require("path");
10
11
  const ensure_dependencies_1 = require("../../utils/ensure-dependencies");
11
12
  const generator_utils_1 = require("../../utils/generator-utils");
@@ -125,7 +126,7 @@ getTestBed().initTestEnvironment(
125
126
  else if (uiFramework === 'react') {
126
127
  (0, generator_utils_1.createOrEditViteConfig)(tree, {
127
128
  project: schema.project,
128
- includeLib: (0, internal_1.getProjectType)(tree, root, projectType) === 'library',
129
+ includeLib: (0, internal_2.getProjectType)(tree, root, projectType) === 'library',
129
130
  includeVitest: true,
130
131
  inSourceTests: schema.inSourceTests,
131
132
  rolldownOptionsExternal: [
@@ -148,7 +149,7 @@ getTestBed().initTestEnvironment(
148
149
  (0, generator_utils_1.createOrEditViteConfig)(tree, {
149
150
  ...schema,
150
151
  includeVitest: true,
151
- includeLib: (0, internal_1.getProjectType)(tree, root, projectType) === 'library',
152
+ includeLib: (0, internal_2.getProjectType)(tree, root, projectType) === 'library',
152
153
  useEsmExtension: true,
153
154
  }, true, {
154
155
  vitestFileName: useVitestConfig,
@@ -156,22 +157,21 @@ getTestBed().initTestEnvironment(
156
157
  });
157
158
  }
158
159
  }
159
- const isTsSolutionSetup = (0, internal_1.isUsingTsSolutionSetup)(tree);
160
+ const isTsSolutionSetup = (0, internal_2.isUsingTsSolutionSetup)(tree);
160
161
  createFiles(tree, schema, root, isTsSolutionSetup);
161
162
  updateTsConfig(tree, schema, root, projectType);
162
163
  if (isTsSolutionSetup) {
163
164
  // in the TS solution setup, the test target depends on the build outputs
164
165
  // so we need to setup the task pipeline accordingly
165
- const nxJson = (0, devkit_1.readNxJson)(tree);
166
+ const nxJson = (0, devkit_1.readNxJson)(tree) ?? {};
166
167
  const testTarget = schema.testTarget ?? 'test';
167
- nxJson.targetDefaults ??= {};
168
- nxJson.targetDefaults[testTarget] ??= {};
169
- nxJson.targetDefaults[testTarget].dependsOn ??= [];
170
- nxJson.targetDefaults[testTarget].dependsOn = Array.from(new Set([...nxJson.targetDefaults[testTarget].dependsOn, '^build']));
168
+ const existing = findTestDefault(nxJson.targetDefaults, testTarget);
169
+ const dependsOn = Array.from(new Set([...(existing?.dependsOn ?? []), '^build']));
170
+ (0, internal_1.upsertTargetDefault)(tree, nxJson, { target: testTarget, dependsOn });
171
171
  (0, devkit_1.updateNxJson)(tree, nxJson);
172
172
  }
173
173
  const devDependencies = await getCoverageProviderDependency(tree, schema.coverageProvider);
174
- devDependencies['@types/node'] = internal_1.typesNodeVersion;
174
+ devDependencies['@types/node'] = internal_2.typesNodeVersion;
175
175
  if (!schema.skipPackageJson) {
176
176
  const installDependenciesTask = (0, devkit_1.addDependenciesToPackageJson)(tree, {}, devDependencies, undefined, true);
177
177
  tasks.push(installDependenciesTask);
@@ -233,7 +233,7 @@ function updateTsConfig(tree, options, projectRoot, projectType) {
233
233
  return json;
234
234
  });
235
235
  }
236
- let runtimeTsconfigPath = (0, devkit_1.joinPathFragments)(projectRoot, (0, internal_1.getProjectType)(tree, projectRoot, projectType) === 'application'
236
+ let runtimeTsconfigPath = (0, devkit_1.joinPathFragments)(projectRoot, (0, internal_2.getProjectType)(tree, projectRoot, projectType) === 'application'
237
237
  ? 'tsconfig.app.json'
238
238
  : 'tsconfig.lib.json');
239
239
  if (options.runtimeTsconfigFileName) {
@@ -356,4 +356,17 @@ function findBuildTarget(project) {
356
356
  }
357
357
  return project.targets?.build ?? null;
358
358
  }
359
+ function findTestDefault(td, target) {
360
+ const value = td?.[target];
361
+ if (value === undefined)
362
+ return undefined;
363
+ if (Array.isArray(value)) {
364
+ const found = value.find((e) => e.filter === undefined);
365
+ if (!found)
366
+ return undefined;
367
+ const { filter: _f, ...rest } = found;
368
+ return rest;
369
+ }
370
+ return value;
371
+ }
359
372
  exports.default = configurationGenerator;
@@ -30,7 +30,7 @@ function updateDependencies(tree, schema) {
30
30
  }, undefined, schema.keepExistingVersions ?? true);
31
31
  }
32
32
  function updateNxJsonSettings(tree) {
33
- const nxJson = (0, devkit_1.readNxJson)(tree);
33
+ const nxJson = (0, devkit_1.readNxJson)(tree) ?? {};
34
34
  const productionFileSet = nxJson.namedInputs?.production;
35
35
  if (productionFileSet) {
36
36
  productionFileSet.push('!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)', '!{projectRoot}/tsconfig.spec.json');
@@ -38,13 +38,17 @@ function updateNxJsonSettings(tree) {
38
38
  }
39
39
  const hasPlugin = nxJson.plugins?.some((p) => typeof p === 'string' ? p === '@nx/vitest' : p.plugin === '@nx/vitest');
40
40
  if (!hasPlugin) {
41
- nxJson.targetDefaults ??= {};
42
- nxJson.targetDefaults['@nx/vitest:test'] ??= {};
43
- nxJson.targetDefaults['@nx/vitest:test'].cache ??= true;
44
- nxJson.targetDefaults['@nx/vitest:test'].inputs ??= [
45
- 'default',
46
- productionFileSet ? '^production' : '^default',
47
- ];
41
+ const existing = (0, internal_1.findTargetDefault)(nxJson.targetDefaults, {
42
+ executor: '@nx/vitest:test',
43
+ });
44
+ (0, internal_1.upsertTargetDefault)(tree, nxJson, {
45
+ executor: '@nx/vitest:test',
46
+ cache: existing?.cache ?? true,
47
+ inputs: existing?.inputs ?? [
48
+ 'default',
49
+ productionFileSet ? '^production' : '^default',
50
+ ],
51
+ });
48
52
  }
49
53
  (0, devkit_1.updateNxJson)(tree, nxJson);
50
54
  }
@@ -60,6 +60,10 @@ function migrateTargetDefaults(tree) {
60
60
  }
61
61
  let hasChanges = false;
62
62
  for (const [_key, targetConfig] of Object.entries(nxJson.targetDefaults)) {
63
+ if (Array.isArray(targetConfig)) {
64
+ // This migration predates the filtered array value form; values are plain objects here.
65
+ continue;
66
+ }
63
67
  if (targetConfig.executor !== '@nx/vitest:test' &&
64
68
  targetConfig.executor !== '@nx/vite:test' &&
65
69
  _key !== '@nx/vitest:test' &&
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nx/vitest",
3
3
  "description": "The Nx Plugin for Vitest to enable fast unit testing with Vitest.",
4
- "version": "23.1.0-beta.3",
4
+ "version": "23.1.0-beta.5",
5
5
  "type": "commonjs",
6
6
  "files": [
7
7
  "dist",
@@ -73,13 +73,13 @@
73
73
  "tslib": "^2.3.0",
74
74
  "semver": "^7.6.3",
75
75
  "@phenomnomnominal/tsquery": "~6.2.0",
76
- "@nx/devkit": "23.1.0-beta.3",
77
- "@nx/js": "23.1.0-beta.3"
76
+ "@nx/devkit": "23.1.0-beta.5",
77
+ "@nx/js": "23.1.0-beta.5"
78
78
  },
79
79
  "peerDependencies": {
80
80
  "vitest": "^3.0.0 || ^4.0.0",
81
81
  "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0",
82
- "@nx/eslint": "23.1.0-beta.3"
82
+ "@nx/eslint": "23.1.0-beta.5"
83
83
  },
84
84
  "peerDependenciesMeta": {
85
85
  "@nx/eslint": {
@@ -93,6 +93,6 @@
93
93
  }
94
94
  },
95
95
  "devDependencies": {
96
- "nx": "23.1.0-beta.3"
96
+ "nx": "23.1.0-beta.5"
97
97
  }
98
98
  }