我正在将一个较旧的Webpack2
项目更新为Webpack4
,并将测试切换到Jest
,但是几个与Webpack相关的问题似乎看似简单。
具体来说,麻烦的项目的项目结构如下所示:
src
- constants
- index.js
- config
- base.js
- test.js
- dev.js
- dist.js
在测试过程中,被测试的类使用import config from 'config'
,因此第一期允许他们找到正确的配置文件。使用Webpack2,它由webpack本身提供支持,但显然不在Jest测试期间。
我可以通过将特定的测试配置硬编码到moduleNameMapper
的jest配置中的package.json
中来解决此问题,
"jest": {
"moduleNameMapper": {
"^config$": "<rootDir>/src/config/test.js"
}
}
这似乎起作用。
问题的第二部分是允许Jest使用src/constants/index.js
这样的语法来查找命名的导出文件import { SOME_CONST } from 'constants'
。
当我尝试使用moduleNameMapper
时,会从使用常量的所有内容中返回undefined,我相信这是因为moduleNameMapper
主要用于模拟依赖关系,而不是提供依赖关系。
考虑到这一点,我认为我需要使用modulePaths
或moduleDirectories
来定位constants
。
我尝试了以下配置(并非同时进行),但没有任何运气:
"modulePaths": [
"<rootDir>/src/constants",
"src/constants"
],
"moduleDirectories": [
"node_modules",
"src",
"src/constants",
"/src/constants"
"/src/constants/",
"./src/constants"
],
Jest
的正确配置应该是什么才能找到我的常数?
如果有什么帮助,我想模仿Webpack2
中的Jest
配置
resolve: {
alias: {
constants: `${this.srcPathAbsolute}/constants/`
}
}