我目前正在尝试在 Typescript monorepo 中使用 jest(不是 Lerna 或任何只是 baseURL
和 paths
的东西,也不是我的决定),我正在测试的文件之一从 monorepo 导入了一些东西。
import {publish, subscribe} from "message-bus"
现在在我的
tsconfig.json
我有:...
"compilerOptions": {
"baseUrl": "./packages",
"paths": {
"message-bus":["message-bus/src"],
},
...
并在包裹中
jest.config.js
:module.exports = {
...
preset: 'ts-jest',
moduleNameMapper: {
'^message-bus/(.*)$': "../message-bus/src/$1"
}
...
}
即使所有这些都到位
jest
提示找不到模块 message-bus
.你能帮我修复我的配置吗?
最佳答案
假设您的 jest.config.js
位于包的根目录而不是 monorepo,您需要 moduleNameMapper
形成从任何位置都可以理解的路径。您可以从 jest.config.js
所在的目录开始执行此操作。文件在,然后从那里建立你的路径。这将创建映射模块的绝对路径。
此外,您的正则表达式捕获组中需要斜线( /
),因为它并不总是在路径中。
const path = require('path');
module.exports = {
...
preset: 'ts-jest',
moduleNameMapper: {
'^message-bus(.*)$': path.join(__dirname, '../message-bus/src$1')
}
...
}
关于typescript - 在 monorepo 中使用 jest + typescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56794436/