Çalışma Alanı
Örnek Proje
Vitest, tek bir Vitest süreci içinde birden fazla proje yapılandırması tanımlama imkanı sunar. Bu özellik, monorepo kurulumları için özellikle kullanışlıdır; ancak resolve.alias, plugins veya test.browser gibi farklı yapılandırmalarla testleri çalıştırmak için de kullanılabilir.
Çalışma Alanı Tanımlama
Bir çalışma alanı, kök dizininde (kök yapılandırma dosyanızla aynı dizinde veya mevcut değilse çalışma dizininde bulunur) bir vitest.workspace veya vitest.projects dosyası içermelidir. Vitest, bu dosya için ts, js ve json uzantılarını destekler.
ADLANDIRMA
Lütfen bu özelliğin workspace olarak adlandırıldığını, workspaces (sonunda "s" olmadan) olmadığını unutmayın.
Çalışma alanı yapılandırma dosyası, projelerinize referans veren bir dosya listesi veya glob kalıpları içeren varsayılan bir dışa aktarım sağlamalıdır. Örneğin, projelerinizi içeren packages adında bir klasörünüz varsa, bu yapılandırma dosyasıyla bir çalışma alanı tanımlayabilirsiniz:
export default ['packages/*'];Vitest, packages içindeki her klasörü, içinde bir yapılandırma dosyası olmasa bile ayrı bir proje olarak değerlendirecektir. Vitest 2.1'den beri, bu glob kalıbı herhangi bir dosyayla eşleşirse, adında vitest olmasa bile bir Vitest yapılandırması olarak kabul edilecektir.
WARNING
Vitest, kök vitest.config dosyasını, çalışma alanı yapılandırmasında açıkça belirtilmedikçe bir çalışma alanı projesi olarak kabul etmez. Sonuç olarak, kök yapılandırma yalnızca reporters ve coverage gibi genel seçenekler üzerinde etkili olacaktır.
Projeleri yapılandırma dosyalarıyla da referans gösterebilirsiniz:
export default ['packages/*/vitest.config.{e2e,unit}.ts'];Bu desen, yalnızca uzantıdan önce e2e veya unit içeren bir vitest.config dosyasına sahip projeleri kapsayacaktır.
Projeleri dahili yapılandırma kullanarak da tanımlayabilirsiniz. Çalışma alanı dosyası her iki sözdizimini de aynı anda destekler.
import { defineWorkspace } from 'vitest/config';
// defineWorkspace geliştirici deneyimi için faydalı tür ipuçları sağlar
export default defineWorkspace([
// `packages` klasöründeki her klasör ve dosyayla eşleşir
'packages/*',
{
// iki yapılandırmayı birleştirmek için "extends" kullanın
extends: './vite.config.js',
test: {
include: ['tests/**/*.{browser}.test.{ts,js}'],
// dahili yapılandırmalar kullanırken bir ad tanımlamanız önerilir
name: 'happy-dom',
environment: 'happy-dom',
},
},
{
test: {
include: ['tests/**/*.{node}.test.{ts,js}'],
name: 'node',
environment: 'node',
},
},
]);WARNING
Tüm projelerin benzersiz adları olmalıdır; aksi takdirde Vitest bir hata fırlatacaktır. Dahili yapılandırmada bir ad sağlanmazsa, Vitest bir sayı atayacaktır. Glob sözdizimiyle tanımlanan proje yapılandırmaları için Vitest, varsayılan olarak en yakın package.json dosyasındaki "name" özelliğini veya hiçbiri bulunamazsa klasör adını kullanacaktır.
Dahili yapılandırmalar kullanmıyorsanız, kök dizininizde küçük bir JSON dosyası oluşturabilirsiniz:
["packages/*"]Çalışma alanı projeleri tüm yapılandırma özelliklerini desteklemez. Daha iyi tür güvenliği için, proje yapılandırma dosyalarında defineConfig yerine defineProject yöntemini tercih edin:
// @errors: 2769
import { defineProject } from 'vitest/config';
export default defineProject({
test: {
environment: 'jsdom',
// "reporters" bir proje yapılandırmasında desteklenmez,
// bu yüzden bir hata verecektir
reporters: ['json'],
},
});Testleri Çalıştırma
Çalışma alanı içindeki testleri çalıştırmak için, kök package.json dosyanızda bir komut dosyası tanımlayın:
{
"scripts": {
"test": "vitest"
}
}Şimdi testler paket yöneticisi kullanılarak çalıştırılabilir:
npm run testyarn testpnpm run testbun testYalnızca tek bir proje içinde testleri çalıştırmanız gerekiyorsa, --project CLI seçeneğini kullanabilirsiniz:
npm run test --project e2eyarn test --project e2epnpm run test --project e2ebun test --project e2eTIP
--project CLI seçeneği, birden fazla projeyi filtrelemek için birden çok kez kullanılabilir:
npm run test --project e2e --project unityarn test --project e2e --project unitpnpm run test --project e2e --project unitbun test --project e2e --project unitYapılandırma
Yapılandırma seçeneklerinin hiçbiri kök düzeyindeki yapılandırma dosyasından doğrudan devralınmaz. Paylaşılan bir yapılandırma dosyası oluşturabilir ve bunu proje yapılandırmasıyla kendiniz birleştirebilirsiniz:
import { defineProject, mergeConfig } from 'vitest/config';
import configShared from '../vitest.shared.js';
export default mergeConfig(
configShared,
defineProject({
test: {
environment: 'jsdom',
},
})
);defineWorkspace düzeyinde, kök düzeyindeki yapılandırmanızdan miras almak için extends seçeneğini kullanabilirsiniz. Tüm seçenekler birleştirilecektir.
import { defineWorkspace } from 'vitest/config';
export default defineWorkspace([
{
extends: './vitest.config.ts',
test: {
name: 'unit',
include: ['**/*.unit.test.ts'],
},
},
{
extends: './vitest.config.ts',
test: {
name: 'integration',
include: ['**/*.integration.test.ts'],
},
},
]);Bazı yapılandırma seçeneklerine bir proje yapılandırmasında izin verilmez. En önemlileri:
coverage: kapsama tüm çalışma alanı için gerçekleştirilirreporters: yalnızca kök düzeyindeki raporlayıcılar desteklenirresolveSnapshotPath: yalnızca kök düzeyindeki çözümleyici dikkate alınır- test çalıştırıcılarını etkilemeyen diğer tüm seçenekler
TIP
Bir proje yapılandırmasında desteklenmeyen tüm yapılandırma seçenekleri, "Yapılandırma" kılavuzunda * işaretiyle belirtilmiştir.