플러그인 API 3.1.0+
WARNING
이 API는 고급 기능을 위한 것입니다. 단순히 테스트를 실행하려는 경우, 이 API는 필요하지 않을 수 있으며 주로 라이브러리 개발자에게 유용합니다.
이 가이드는 Vite 플러그인 사용법을 알고 있다고 가정합니다.
Vitest는 버전 3.1부터 실험적인 configureVitest
플러그인 훅을 제공합니다. 이 API에 대한 피드백은 GitHub에서 언제든지 환영합니다.
import type { Vite, VitestPluginContext } from 'vitest/node';
export function plugin(): Vite.Plugin {
return {
name: 'vitest:my-plugin',
configureVitest(context: VitestPluginContext) {
// ...
},
};
}
/// <reference types="vitest/config" />
import type { Plugin } from 'vite';
export function plugin(): Plugin {
return {
name: 'vitest:my-plugin',
transform() {
// ...
},
configureVitest(context) {
// ...
},
};
}
TypeScript
Vitest는 Vite의 모든 타입 전용 임포트를 Vite
네임스페이스를 통해 재내보내므로, 이를 사용하여 버전을 일치시킬 수 있습니다. 그러나 Vite와 Vitest 모두를 위한 플러그인을 작성하는 경우, vite
진입점에서 제공하는 Plugin
타입을 계속 사용할 수 있습니다. configureVitest
가 올바르게 확장되도록 vitest/config
가 어딘가에 참조되었는지 확인하십시오:
/// <reference types="vitest/config" />
reporter.onInit
과 달리, 이 훅은 Vitest 생명주기의 초기 단계에서 실행되어 coverage
및 reporters
와 같은 구성을 변경할 수 있습니다. 더 중요한 점은, 플러그인이 전역 구성이 아닌 테스트 프로젝트에 정의된 경우 전역 설정을 조작할 수 있다는 것입니다.
컨텍스트
project
플러그인이 속한 현재 테스트 프로젝트.
Browser Mode
브라우저 기능에 의존하는 경우, project.browser
필드가 아직 설정되지 않았음을 유의하십시오. 대신 reporter.onBrowserInit
이벤트를 사용하십시오.
vitest
전역 Vitest 인스턴스. vitest.config
속성을 직접 변경하여 전역 구성을 변경할 수 있습니다:
vitest.config.coverage.enabled = false;
vitest.config.reporters.push([['my-reporter', {}]]);
Config is Resolved
Vitest가 이미 구성을 해석했으므로 일부 타입이 일반적인 사용자 구성과 다를 수 있습니다. 이는 또한 setupFile
과 같은 일부 속성이 다시 해석되지 않음을 의미합니다. 새 파일을 추가하는 경우 먼저 처리해야 합니다.
이 시점에서는 리포터가 아직 생성되지 않았으므로 vitest.reporters
를 직접 수정해도 덮어쓰여질 것이기 때문에 효과가 없습니다. 자체 리포터를 주입하려면 대신 구성을 수정하십시오.
injectTestProjects
function injectTestProjects(
config: TestProjectConfiguration | TestProjectConfiguration[]
): Promise<TestProject[]>;
이 메서드는 구성 glob 패턴, 구성 파일 경로 또는 인라인 구성을 받습니다. 해석된 테스트 프로젝트 배열을 반환합니다.
// 사용자 정의 별칭으로 단일 프로젝트 추가
const newProjects = await injectTestProjects({
// `extends`를 사용하여 현재 프로젝트 구성을 상속할 수 있습니다.
// 이미 존재하는 이름의 프로젝트를 생성할 수 없으므로,
// 사용자 정의 이름을 지정하는 것이 좋습니다.
extends: project.vite.config.configFile,
test: {
name: 'my-custom-alias',
alias: {
customAlias: resolve('./custom-path.js'),
},
},
});
Projects are Filtered
Vitest는 구성 해석 중에 프로젝트를 필터링하므로, 사용자가 필터를 정의한 경우 주입된 프로젝트가 필터와 일치하지 않으면 포함되지 않을 수 있습니다. vitest.config.project
옵션을 통해 필터를 업데이트함으로써 항상 테스트 프로젝트를 포함할 수 있습니다:
vitest.config.project.push('my-project-name');
이는 injectTestProjects
메서드로 추가된 프로젝트에만 영향을 미칩니다.
Referencing the Current Config
사용자 구성을 유지하려면 extends
속성을 사용할 수 있습니다. 다른 모든 속성은 사용자가 정의한 구성과 병합됩니다.
프로젝트의 configFile
은 Vite의 구성에서 project.vite.config.configFile
로 접근 가능합니다.
이는 name
도 상속된다는 점에 유의하십시오. Vitest는 동일한 이름의 여러 프로젝트를 허용하지 않으므로 오류가 발생할 수 있습니다. 다른 이름을 지정했는지 확인해야 합니다. project.name
속성을 통해 현재 이름에 접근할 수 있으며 사용된 모든 이름은 vitest.projects
배열에서 확인할 수 있습니다.