Extending default reporters 
You can import reporters from vitest/reporters and extend them to create your custom reporters.
Extending built-in reporters 
In general, you don't need to create your reporter from scratch. vitest comes with several default reporting programs that you can extend.
ts
import { DefaultReporter } from 'vitest/reporters'
export default class MyDefaultReporter extends DefaultReporter {
  // do something
}import { DefaultReporter } from 'vitest/reporters'
export default class MyDefaultReporter extends DefaultReporter {
  // do something
}Of course, you can create your reporter from scratch. Just extend the BaseReporter class and implement the methods you need.
And here is an example of a custom reporter:
ts
// ./custom-reporter.js
import { BaseReporter } from 'vitest/reporters'
export default class CustomReporter extends BaseReporter {
  onCollected() {
    const files = this.ctx.state.getFiles(this.watchFilters)
    this.reportTestSummary(files)
  }
}// ./custom-reporter.js
import { BaseReporter } from 'vitest/reporters'
export default class CustomReporter extends BaseReporter {
  onCollected() {
    const files = this.ctx.state.getFiles(this.watchFilters)
    this.reportTestSummary(files)
  }
}Or implement the Reporter interface:
ts
// ./custom-reporter.js
import { Reporter } from 'vitest/reporters'
export default class CustomReporter implements Reporter {
  onCollected() {
    // print something
  }
}// ./custom-reporter.js
import { Reporter } from 'vitest/reporters'
export default class CustomReporter implements Reporter {
  onCollected() {
    // print something
  }
}Then you can use your custom reporter in the vitest.config.ts file:
ts
import { defineConfig } from 'vitest/config'
import CustomReporter from './custom-reporter.js'
export default defineConfig({
  test: {
    reporters: [new CustomReporter()],
  },
})import { defineConfig } from 'vitest/config'
import CustomReporter from './custom-reporter.js'
export default defineConfig({
  test: {
    reporters: [new CustomReporter()],
  },
})Exported reporters 
vitest comes with a few built-in reporters that you can use out of the box.
Built-in reporters: 
- BasicReporter
- DefaultReporter
- DotReporter
- JsonReporter
- VerboseReporter
- TapReporter
- JUnitReporter
- TapFlatReporter
- HangingProcessReporter
Base Abstract reporters: 
- BaseReporter
Interface reporters: 
- Reporter