jestjs - Hoe converteer je een TypeScript-aliaspad naar Jest "moduleNameMapper", wanneer de alias voor een specifiek bestand is?
Ik probeer Jest te configureren in een TypeScript-project.
Hier gebruiken we padalias in tsconfig.json, zoals dit:
"baseUrl": ".",
"paths": {
"@eddystone-shared/*": [ "../shared/*" ],
"@eddystone-firebase-helpers/*": [ "src/helpers/firebase-helpers/*" ],
"@eddystone-func-config": ["src/config/config"],
Dus ze werken zo:
- Verwijst naar alle bestanden in de bovenliggende map, d.w.z.
- Verwijst naar alle bestanden in de src-subdirectory.
- Verwijst naar één specifiek bestand.
Ik heb op GitHub van Jest gevonden, dat de Jest moduleNameMapper de configuratie is om te gebruiken. Ik heb geprobeerd het zo te converteren:
"moduleNameMapper": {
"^@eddystone-shared/(.*)$": "<rootDir>../shared/$1",
"^@eddystone-firebase-helpers/(.*)$": "<rootDir>/src/helpers/firebase-helpers/$1",
"^@eddystone-func-config/(.*)$": "<rootDir>/src/config/config",
Maar het werkt niet. Het probleem is de @eddystone-func-config alias. Dus mijn vraag is: hoe maak je een moduleNameMapper vermelding voor een specifiek bestand?
Antwoord #1
Allereerst is het de moeite waard om te zeggen dat het jest-module-name-mapper pakket zou moeten helpen. Het genereert automatisch de moduleNameMapper configuratie op basis van de inhoud van je tsconfig.json.
Zoals de documentatie zegt, is het enige dat gedaan moet worden, jest.config.js op de volgende manier te configureren:
module.exports = {
...
moduleNameMapper: require('jest-module-name-mapper')(),
};
Wat betreft je configuratie, het lijkt erop dat de regex "^@eddystone-func-config/(.*)$" incorrect is en verkeerd begrepen wordt: aangezien de functie geïmporteerd moet worden als "@eddystone-func-config", zou deze naam overeen moeten komen met de regex, maar dat doet het niet. /(.*) is overbodig omdat @eddystone-func-config geen directory is.
