From: cexbrayat Date: Wed, 14 Aug 2024 13:53:51 +0000 (+0200) Subject: feat: add @vitest/eslint-plugin when using vitest X-Git-Tag: v3.11.0~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aea5c1b330fa81e34ed36448aecc875ae6528a6b;p=thirdparty%2Fvuejs%2Fcreate-vue.git feat: add @vitest/eslint-plugin when using vitest The plugin is now officillay recommended, so let's add it to the eslint config when selecting both eslint and vitest. --- diff --git a/__test__/renderEslint.spec.ts b/__test__/renderEslint.spec.ts index 5c54e4e2..2a150669 100644 --- a/__test__/renderEslint.spec.ts +++ b/__test__/renderEslint.spec.ts @@ -4,6 +4,7 @@ import { getAdditionalConfigAndDependencies } from '../utils/renderEslint' describe('renderEslint', () => { it('should get additional dependencies and config with no test flags', () => { const { additionalConfig, additionalDependencies } = getAdditionalConfigAndDependencies({ + needsVitest: false, needsCypress: false, needsCypressCT: false, needsPlaywright: false @@ -12,8 +13,25 @@ describe('renderEslint', () => { expect(additionalDependencies).toStrictEqual({}) }) + it('should get additional dependencies and config with for vitest', () => { + const { additionalConfig, additionalDependencies } = getAdditionalConfigAndDependencies({ + needsVitest: true, + needsCypress: false, + needsCypressCT: false, + needsPlaywright: false + }) + expect(additionalConfig.overrides[0].files).toStrictEqual([ + 'src/**/*.{test,spec}.{js,ts,jsx,tsx}' + ]) + expect(additionalConfig.overrides[0].extends).toStrictEqual([ + 'plugin:@vitest/legacy-recommended' + ]) + expect(additionalDependencies['@vitest/eslint-plugin']).not.toBeUndefined() + }) + it('should get additional dependencies and config with for cypress', () => { const { additionalConfig, additionalDependencies } = getAdditionalConfigAndDependencies({ + needsVitest: false, needsCypress: true, needsCypressCT: false, needsPlaywright: false @@ -28,6 +46,7 @@ describe('renderEslint', () => { it('should get additional dependencies and config with for cypress with component testing', () => { const { additionalConfig, additionalDependencies } = getAdditionalConfigAndDependencies({ + needsVitest: false, needsCypress: true, needsCypressCT: true, needsPlaywright: false @@ -43,6 +62,7 @@ describe('renderEslint', () => { it('should get additional dependencies and config with for playwright', () => { const { additionalConfig, additionalDependencies } = getAdditionalConfigAndDependencies({ + needsVitest: false, needsCypress: false, needsCypressCT: false, needsPlaywright: true diff --git a/index.ts b/index.ts index f552cfd8..8e0e55c9 100755 --- a/index.ts +++ b/index.ts @@ -459,6 +459,7 @@ async function init() { if (needsEslint) { renderEslint(root, { needsTypeScript, + needsVitest, needsCypress, needsCypressCT, needsPrettier, diff --git a/template/eslint/package.json b/template/eslint/package.json index 7619f8df..9522c94b 100644 --- a/template/eslint/package.json +++ b/template/eslint/package.json @@ -1,5 +1,6 @@ { "devDependencies": { + "@vitest/eslint-plugin": "1.0.2", "eslint-plugin-cypress": "^3.4.0", "eslint-plugin-playwright": "^1.6.2" } diff --git a/utils/renderEslint.ts b/utils/renderEslint.ts index ca48646a..fb061814 100644 --- a/utils/renderEslint.ts +++ b/utils/renderEslint.ts @@ -13,9 +13,10 @@ const eslintDeps = eslintTemplatePackage.devDependencies export default function renderEslint( rootDir, - { needsTypeScript, needsCypress, needsCypressCT, needsPrettier, needsPlaywright } + { needsTypeScript, needsVitest, needsCypress, needsCypressCT, needsPrettier, needsPlaywright } ) { const { additionalConfig, additionalDependencies } = getAdditionalConfigAndDependencies({ + needsVitest, needsCypress, needsCypressCT, needsPlaywright @@ -64,6 +65,7 @@ export default function renderEslint( // visible for testing export function getAdditionalConfigAndDependencies({ + needsVitest, needsCypress, needsCypressCT, needsPlaywright @@ -71,6 +73,17 @@ export function getAdditionalConfigAndDependencies({ const additionalConfig: Linter.Config = {} const additionalDependencies = {} + if (needsVitest) { + additionalConfig.overrides = [ + { + files: ['src/**/*.{test,spec}.{js,ts,jsx,tsx}'], + extends: ['plugin:@vitest/legacy-recommended'] + } + ] + + additionalDependencies['@vitest/eslint-plugin'] = eslintDeps['@vitest/eslint-plugin'] + } + if (needsCypress) { additionalConfig.overrides = [ {