]> git.ipfire.org Git - thirdparty/vuejs/create-vue.git/commitdiff
feat: add @vitest/eslint-plugin when using vitest
authorcexbrayat <cedric@ninja-squad.com>
Wed, 14 Aug 2024 13:53:51 +0000 (15:53 +0200)
committerCédric Exbrayat <cexbrayat@users.noreply.github.com>
Wed, 14 Aug 2024 14:44:57 +0000 (16:44 +0200)
The plugin is now officillay recommended, so let's add it to the eslint config when selecting both eslint and vitest.

__test__/renderEslint.spec.ts
index.ts
template/eslint/package.json
utils/renderEslint.ts

index 5c54e4e2ddf93238cf4dee2844899fc0b6ddc940..2a150669a9fd604fa13ad65ca411c906b1365ca7 100644 (file)
@@ -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
index f552cfd823490f4ca0bc1946271054f992e63a5c..8e0e55c9e8428b3d476e5d33e4b97bcf2198354c 100755 (executable)
--- a/index.ts
+++ b/index.ts
@@ -459,6 +459,7 @@ async function init() {
   if (needsEslint) {
     renderEslint(root, {
       needsTypeScript,
+      needsVitest,
       needsCypress,
       needsCypressCT,
       needsPrettier,
index 7619f8df29037b1b8e85fcec358e2348a9a05b32..9522c94b765b116160a52191c2272563381b5f77 100644 (file)
@@ -1,5 +1,6 @@
 {
   "devDependencies": {
+    "@vitest/eslint-plugin": "1.0.2",
     "eslint-plugin-cypress": "^3.4.0",
     "eslint-plugin-playwright": "^1.6.2"
   }
index ca48646a11d342603cf249cdb89aa55aeaed1802..fb061814e7769a3fcfc3af1776e46386e8277f86 100644 (file)
@@ -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 = [
       {