Çalışma Alanı
Vitest, çalışma alanı yapılandırma dosyası aracılığıyla monorepo'lar için yerleşik destek sunar. Proje ayarlarınızı tanımlamak için bir çalışma alanı oluşturabilirsiniz.
Çalışma Alanı Tanımlama
Bir çalışma alanı, kök dizininde bir vitest.workspace
veya vitest.projects
dosyasına sahip olmalıdır (varsa yapılandırma dosyanızla aynı klasörde). Vitest, bu dosya için ts
/js
/json
uzantılarını destekler.
Çalışma alanı yapılandırma dosyası, projelerinizi işaret eden dosya yollarının veya glob desenlerinin bir listesini varsayılan olarak dışa aktarmalıdır. Örneğin, packages
adlı projelerinizle bir klasörünüz varsa, aşağıdaki yapılandırma dosyasıyla bir çalışma alanı tanımlayabilirsiniz:
export default ['packages/*'];
Vitest, packages
içindeki her klasörü - yapılandırma dosyası bulunmasa bile - ayrı bir proje olarak değerlendirecektir.
WARNING
Vitest, kök dizindeki yapılandırma dosyasını bir çalışma alanı projesi olarak değerlendirmez (dolayısıyla, bu yapılandırma dosyasında belirtilmediği sürece include
içinde belirtilen testleri çalıştırmaz).
Projeleri yapılandırma dosyalarıyla da referans gösterebilirsiniz:
export default ['packages/*/vitest.config.{e2e,unit}.ts'];
Bu kalıp, yalnızca dosya adında uzantıdan önce e2e
veya unit
ifadelerini içeren vitest.config
dosyalarına sahip projeleri dahil edecektir.
WARNING
Glob deseniyle dosya adlarına başvuruyorsanız, yapılandırma dosyanızın vite.config
veya vitest.config
ile başladığından emin olun. Aksi takdirde, Vitest bu dosyayı atlayacaktır.
Ayrıca, projeleri doğrudan yapılandırma nesneleriyle de tanımlayabilirsiniz. Çalışma alanı dosyası, aynı anda her iki sözdizimini de kullanmayı destekler.
import { defineWorkspace } from 'vitest/config';
// defineWorkspace, geliştirici dostu tür ipuçları sağlar
export default defineWorkspace([
'packages/*',
{
// iki yapılandırmayı birleştirmek için "extends" ekleyin
extends: './vite.config.js',
test: {
include: ['tests/**/*.{browser}.test.{ts,js}'],
// doğrudan 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, bir hata oluşacaktır. Doğrudan yapılandırmanın içinde bir ad belirtmezseniz, Vitest bir sayı atayacaktır. Glob sözdizimiyle tanımlanan bir proje yapılandırmasının içinde bir ad belirtmezseniz, Vitest varsayılan olarak dizin adını kullanacaktır.
Doğrudan yapılandırmalar kullanmıyorsanız, kök dizininizde basit bir JSON dosyası oluşturabilirsiniz:
["packages/*"]
Çalışma alanı projeleri tüm yapılandırma özelliklerini desteklemez. Daha iyi tür güvenliği sağlamak için, proje yapılandırma dosyalarınızda defineConfig
yöntemi yerine defineProject
yöntemini kullanın:
import { defineProject } from 'vitest/config';
export default defineProject({
test: {
environment: 'jsdom',
// "reporters" bir proje yapılandırmasında desteklenmiyor,
// bu nedenle bir hata gösterecektir
reporters: ['json'],
},
});
Yapılandırma
Yapılandırma seçeneklerinin hiçbiri kök dizindeki yapılandırma dosyasından devralınmaz. Paylaşılan bir yapılandırma dosyası oluşturabilir ve bunu proje yapılandırmasıyla birleştirebilirsiniz:
import { defineProject, mergeConfig } from 'vitest/config';
import configShared from '../vitest.shared.js';
export default mergeConfig(
configShared,
defineProject({
test: {
environment: 'jsdom',
},
})
);
Ayrıca, yapılandırma seçeneklerinden bazılarına bir proje yapılandırmasında izin verilmez. En önemlileri:
coverage
: kapsam tüm çalışma alanı için uygulanırreporters
: yalnızca kök dizindeki raporlayıcılar desteklenirresolveSnapshotPath
: yalnızca kök dizindeki çö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ının içinde desteklenmeyen tüm yapılandırma seçenekleri, "Yapılandırma" sayfasında yanlarında * işaretine sahiptir.
Kapsam
Çalışma alanı projelerinde kapsam özelliği varsayılan olarak etkindir. Ancak all
seçeneği etkinse ve bazı projelerinizde standart olmayan uzantılar kullanıyorsanız, kök yapılandırma dosyanızda bu uzantıyı işleyen bir eklentiye ihtiyacınız olacaktır.
Örneğin, Vue dosyaları kullanan ve kendi yapılandırma dosyasına sahip bir paketiniz varsa, ancak bazı dosyalar testlerinize aktarılmazsa, kapsam kullanılmayan dosyaların kullanımını analiz etmeye çalışırken başarısız olur, çünkü proje yapılandırması yerine kök dizindeki yapılandırmaya bağlıdır.