Çalışma Alanı
Örnek Proje
Vitest, çalışma alanı yapılandırma dosyası kullanarak monorepo'lar için yerleşik destek sunar. Projelerinizin kurulumlarını 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ı, projelerinize referans veren bir dosya veya glob kalıpları listesiyle varsayılan bir dışa aktarma içermelidir. Örneğin, projelerinizi içeren packages
adlı bir klasörünüz varsa, aşağıdaki yapılandırma dosyasıyla bir çalışma alanı tanımlayabilirsiniz:
export default ['packages/*'];
packages
içindeki her klasör, içinde bir yapılandırma dosyası olmasa bile Vitest tarafından ayrı bir proje olarak kabul edilir.
WARNING
Vitest, kök yapılandırmayı bir çalışma alanı projesi olarak kabul etmez (bu nedenle, bu yapılandırmada belirtilmediği sürece include
içinde belirtilen testleri çalıştırmaz).
Ayrıca, projeleri yapılandırma dosyalarıyla da referans alabilirsiniz:
export default ['packages/*/vitest.config.{e2e,unit}.ts'];
Bu desen, dosya adının uzantısından önce e2e
ve unit
ifadelerini içeren vitest.config
dosyalarına sahip projeleri dahil edecektir.
WARNING
Glob kalıbıyla 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 onu yok sayacaktır.
Ayrıca, satır içi yapılandırma ile projeler de tanımlayabilirsiniz. Çalışma alanı dosyası, aynı anda her iki sözdizimini de kullanmayı destekler.
import { defineWorkspace } from 'vitest/config';
// defineWorkspace, geliştirici deneyimini iyileştiren kullanışlı tür ipuçları sunar
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, Vitest hata verecektir. Doğrudan yapılandırmanın içinde bir ad sağlamazsanız, Vitest bir sayı atayacaktır. Glob sözdizimiyle tanımlanan bir proje yapılandırmasının içinde bir ad sağlamazsanız, Vitest varsayılan olarak dizin adını kullanacaktır.
Doğrudan 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 özelliklerinin tamamını desteklemez. Daha iyi tür güvenliği için, proje yapılandırma dosyalarının içinde defineConfig
yöntemi yerine defineProject
kullanın:
import { defineProject } from 'vitest/config';
export default defineProject({
test: {
environment: 'jsdom',
// "reporters" bir proje yapılandırmasında desteklenmez,
// bu nedenle bir hata gösterecektir
reporters: ['json'],
},
});
Testleri Çalıştırma
Çalışma alanının içindeki testleri çalıştırmak için, kök package.json
dosyanızda bir komut dosyası tanımlayın:
{
"scripts": {
"test": "vitest"
}
}
Artık testler paket yöneticinizle kullanılarak çalıştırılabilir:
npm run test
yarn test
pnpm run test
bun test
Testleri yalnızca tek bir proje için çalıştırmanız gerekiyorsa, --project
CLI seçeneğini kullanın:
npm run test --project e2e
TIP
--project
CLI seçeneği, birden çok projeyi filtrelemek için birden çok kez kullanılabilir:
npm run test --project e2e --project unit
Yapılandırma
Yapılandırma seçeneklerinin hiçbiri kök düzeydeki yapılandırma dosyasından 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',
},
})
);
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ı genelinde yapılırreporters
: yalnızca kök düzeydeki raporlayıcılar desteklenebilirresolveSnapshotPath
: yalnızca kök düzeydeki çözümleyici dikkate alınır- test koşucuları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 (Coverage)
Çalışma alanı projeleri için kapsam, varsayılan olarak etkindir. Ancak all
seçeneği etkinse ve bazı projelerinizde geleneksel olmayan uzantılar kullanıyorsanız, kök yapılandırma dosyanızda bu uzantıyı işleyen bir eklentiye sahip olmanız gerekir.
Örneğin, Vue dosyalarını kullanan ve kendi yapılandırma dosyasına sahip bir paketiniz varsa, ancak dosyaların bazıları testlerinizde içe aktarılmamışsa, kapsam kullanılmayan dosyaların kullanımını analiz etmeye çalışırken başarısız olur. Bunun nedeni, proje yapılandırması yerine kök yapılandırmaya dayanmasıdır.