Ç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 test
yarn test
pnpm run test
bun test
Yalnızca tek bir proje içinde testleri çalıştırmanız gerekiyorsa, --project
CLI seçeneğini kullanabilirsiniz:
npm run test --project e2e
yarn test --project e2e
pnpm run test --project e2e
bun test --project e2e
TIP
--project
CLI seçeneği, birden fazla projeyi filtrelemek için birden çok kez kullanılabilir:
npm run test --project e2e --project unit
yarn test --project e2e --project unit
pnpm run test --project e2e --project unit
bun test --project e2e --project unit
Yapı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.