Eklenti API'si 3.1.0+
WARNING
Bu, ileri düzey bir API'dir. Yalnızca testleri çalıştırmak istiyorsanız, muhtemelen buna ihtiyacınız yoktur. Öncelikle kütüphane geliştiricileri tarafından kullanılır.
Bu kılavuz, Vite eklentileri ile nasıl çalışılacağını bildiğinizi varsayar.
Vitest, 3.1 sürümünden bu yana deneysel bir configureVitest
eklenti kancasını desteklemektedir. Bu API hakkındaki tüm geri bildirimlere GitHub üzerinden açığız.
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'ın yalnızca tür içe aktarımlarını bir Vite
ad alanı aracılığıyla yeniden dışa aktarır; bunu sürümlerinizi senkronize tutmak için kullanabilirsiniz. Ancak, hem Vite hem de Vitest için bir eklenti yazıyorsanız, vite
giriş noktasından Plugin
türünü kullanmaya devam edebilirsiniz. Sadece configureVitest
'in doğru şekilde genişletilmesi için vitest/config
'in bir yerde referans alındığından emin olun:
/// <reference types="vitest/config" />
reporter.onInit
'in aksine, bu kanca Vitest yaşam döngüsünün erken aşamalarında çalışır ve coverage
ve reporters
gibi yapılandırmalarda değişiklik yapmanıza olanak tanır. Daha önemli bir değişiklik ise, eklentiniz genel yapılandırmada değil de bir test projesinde tanımlanmışsa, genel yapılandırmayı değiştirebilmenizdir.
Bağlam
project
Eklentinin ait olduğu mevcut test projesi.
Tarayıcı Modu
Tarayıcı özelliğine güveniyorsanız, project.browser
alanının henüz ayarlanmadığını unutmayın. Bunun yerine reporter.onBrowserInit
olayını kullanın.
vitest
Genel Vitest örneği. vitest.config
özelliğini doğrudan değiştirerek genel yapılandırmayı değiştirebilirsiniz:
vitest.config.coverage.enabled = false;
vitest.config.reporters.push([['my-reporter', {}]]);
Yapılandırma Çözüldü
Vitest'in yapılandırmayı zaten çözdüğünü unutmayın, bu nedenle bazı türler standart kullanıcı yapılandırmasından farklı olabilir. Bu aynı zamanda, setupFile
gibi bazı özelliklerin yeniden çözülmeyeceği anlamına gelir. Yeni dosyalar ekliyorsanız, bunların önce çözümlendiğinden emin olun.
Bu aşamada raporlayıcılar henüz oluşturulmamıştır. Bu nedenle, vitest.reporters
'ı değiştirmek hiçbir etkisi olmayacaktır çünkü bu değişiklik üzerine yazılacaktır. Kendi raporlayıcınızı eklemeniz gerekiyorsa, bunun yerine yapılandırmayı değiştirin.
injectTestProjects
function injectTestProjects(
config: TestProjectConfiguration | TestProjectConfiguration[]
): Promise<TestProject[]>;
Bu yöntem, bir yapılandırma glob deseni, bir yapılandırma dosyasının dosya yolunu veya satır içi bir yapılandırmayı kabul eder. Çözümlenmiş test projelerinden oluşan bir dizi döndürür.
// özel bir takma ad ile tek bir proje enjekte et
const newProjects = await injectTestProjects({
// 'extends' anahtar kelimesini kullanarak mevcut proje yapılandırmasını devralabilirsiniz
// zaten var olan bir isimle bir projeniz olamayacağını unutmayın,
// bu nedenle özel bir ad belirlemek iyi bir yöntemdir
extends: project.vite.config.configFile,
test: {
name: 'my-custom-alias',
alias: {
customAlias: resolve('./custom-path.js'),
},
},
});
Projeler Filtrelenir
Vitest, yapılandırma çözümlemesi sırasında projeleri filtreler, bu nedenle kullanıcı bir filtre tanımladıysa, enjekte edilen proje filtreyle eşleşmediği sürece çözümlenmeyebilir. Test projenizi her zaman dahil etmek için vitest.config.project
seçeneğini kullanarak filtreyi güncelleyebilirsiniz:
vitest.config.project.push('my-project-name');
Bunun yalnızca injectTestProjects
yöntemiyle eklenen projeleri etkileyeceğini unutmayın.
Mevcut Yapılandırmaya Referans Verme
Kullanıcı yapılandırmasını korumak istiyorsanız, extends
özelliğini belirtebilirsiniz. Diğer tüm özellikler, kullanıcı tanımlı yapılandırma ile birleştirilecektir.
Projenin configFile
'ına Vite'ın yapılandırmasında erişilebilir: project.vite.config.configFile
.
Bunun name
'i de devralacağını unutmayın - Vitest aynı ada sahip birden fazla projeye izin vermez, bu nedenle bu bir hata atacaktır. Farklı bir ad belirttiğinizden emin olun. Mevcut ada project.name
özelliği aracılığıyla erişebilir ve kullanılan tüm adlar vitest.projects
dizisinde mevcuttur.