From 32f60f11f44f3acf979898a3386ed41daff59cee Mon Sep 17 00:00:00 2001 From: Nicholas Cunningham Date: Fri, 2 Dec 2022 15:35:01 -0700 Subject: [PATCH] fix(vite): update nx.json for vitest (#13606) Co-authored-by: Nicholas Cunningham --- .../vite/src/generators/init/init.spec.ts | 34 ++++++++++++++++++- packages/vite/src/generators/init/init.ts | 28 +++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/packages/vite/src/generators/init/init.spec.ts b/packages/vite/src/generators/init/init.spec.ts index b9418b87d1b34..eb2db64e7438c 100644 --- a/packages/vite/src/generators/init/init.spec.ts +++ b/packages/vite/src/generators/init/init.spec.ts @@ -1,4 +1,10 @@ -import { addDependenciesToPackageJson, readJson, Tree } from '@nrwl/devkit'; +import { + addDependenciesToPackageJson, + NxJsonConfiguration, + readJson, + Tree, + updateJson, +} from '@nrwl/devkit'; import { createTreeWithEmptyV1Workspace } from '@nrwl/devkit/testing'; import { nxVersion } from '../../utils/versions'; @@ -28,4 +34,30 @@ describe('@nrwl/vite:init', () => { expect(packageJson).toMatchSnapshot(); }); }); + + describe('vitest targets', () => { + it('should add target defaults for test', async () => { + updateJson(tree, 'nx.json', (json) => { + json.namedInputs ??= {}; + json.namedInputs.production = ['default']; + return json; + }); + + initGenerator(tree, { uiFramework: 'react' }); + + const productionNamedInputs = readJson(tree, 'nx.json').namedInputs + .production; + const testDefaults = readJson(tree, 'nx.json').targetDefaults.test; + + expect(productionNamedInputs).toContain( + '!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)' + ); + expect(productionNamedInputs).toContain( + '!{projectRoot}/tsconfig.spec.json' + ); + expect(testDefaults).toEqual({ + inputs: ['default', '^production'], + }); + }); + }); }); diff --git a/packages/vite/src/generators/init/init.ts b/packages/vite/src/generators/init/init.ts index e2ba63f111d32..fff1b31df99dd 100644 --- a/packages/vite/src/generators/init/init.ts +++ b/packages/vite/src/generators/init/init.ts @@ -2,8 +2,10 @@ import { addDependenciesToPackageJson, convertNxGenerator, readJson, + readWorkspaceConfiguration, Tree, updateJson, + updateWorkspaceConfiguration, } from '@nrwl/devkit'; import { @@ -60,8 +62,34 @@ function moveToDevDependencies(tree: Tree) { }); } +export function createVitestConfig(tree: Tree) { + const workspaceConfiguration = readWorkspaceConfiguration(tree); + + const productionFileSet = workspaceConfiguration.namedInputs?.production; + if (productionFileSet) { + productionFileSet.push( + '!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)', + '!{projectRoot}/tsconfig.spec.json' + ); + + workspaceConfiguration.namedInputs.production = Array.from( + new Set(productionFileSet) + ); + } + + workspaceConfiguration.targetDefaults ??= {}; + workspaceConfiguration.targetDefaults.test ??= {}; + workspaceConfiguration.targetDefaults.test.inputs ??= [ + 'default', + productionFileSet ? '^production' : '^default', + ]; + + updateWorkspaceConfiguration(tree, workspaceConfiguration); +} + export function initGenerator(tree: Tree, schema: Schema) { moveToDevDependencies(tree); + createVitestConfig(tree); const installTask = checkDependenciesInstalled(tree, schema); return installTask; }