typescript - cale fișier configurare jest@28 babel-jest
Am făcut upgrade la jest de la versiunea 27 la 28 într-un monorepo și am observat că jest@28 nu mai preia configurația babel. Am citit despre schimbările majore în ghidul de migrare, în special secțiunea despre modificările configurației babel, dar sunt puțin confuz cu privire la ce înseamnă exact acest lucru:
babel-jest transmite acum root: config.rootDir către Babel atunci când rezolvă configurația. Aceasta îmbunătățește compatibilitatea atunci când se folosesc proiecte cu configurații diferite, dar ar putea însemna că configurația ta Babel nu mai este preluată în același mod.
Așa este structurat proiectul meu:
- Este un monorepo standard care se bazează pe lerna și pe workspace-urile clasice yarn.
jesteste instalat ca o dependință de workspace- dependențele babel sunt de asemenea instalate ca dependențe ale spațiului de lucru
- teste sunt scrise în TypeScript și transpilate prin
babel-jest
Fișierul de configurare Babel (babel.config.js) se află în rădăcina depozitului și configurează doar jest pentru a transpila testele TypeScript:
module.exports = {
presets: [
['@babel/preset-env', { targets: { node: 'current' } }],
'@babel/preset-typescript'
]
}
Jest ca o configurație de bază (root.config.js) care este transmisă scriptului npm:
module.exports = {
rootDir: '../..',
projects: [
'<rootDir>/packages/@scope/packageA',
'<rootDir>/packages/@scope/packageB',
'<rootDir>/packages/@scope/packageC',
],
// Global mono-repo code coverage threshold.
coverageThreshold: {
global: {
branches: 80,
functions: 85,
lines: 85,
},
},
};
Și de asemenea are o configurație comună (common.config.js) care este importată și extinsă în fiecare proiect:
module.exports = {
testMatch: ['<rootDir>/**/__tests__/**/*.spec.ts'],
};
A trebuit să actualizez configurația common.config.js pentru jest cu următoarele pentru a funcționa cu jest 28:
module.exports = {
testMatch: ['<rootDir>/**/__tests__/**/*.spec.ts'],
transform: {
'^.+\\.[jt]sx?$': ['babel-jest', { configFile: './babel.config.js' }],
},
};
Rețineți că fișierul root jest și fișierele comune de configurare sunt în <wkspceRoot>/scripts/jest.
Mă întreb doar dacă există o modalitate de a asigura că babel-jest preia fișierul meu de configurare babel fără a fi nevoie să-l trec explicit și ce înseamnă în detaliu modificarea citată.