spe*_*eak 35 javascript reactjs webpack jestjs webpack-2
我希望能够在使用jest时使用webpack别名来解析导入,并且最佳地引用它webpack.aliases以避免重复.
Jest conf:
"jest": {
"modulePaths": ["src"],
"moduleDirectories": ["node_modules"],
"moduleNameMapper": {
"^@shared$": "<rootDir>/shared/",
"^@components$": "<rootDir>/shared/components/"
}
},
Run Code Online (Sandbox Code Playgroud)
Webpack别名:
exports.aliases = {
'@shared': path.resolve(paths.APP_DIR, 'shared'),
'@components': path.resolve(paths.APP_DIR, 'shared/components'),
};
Run Code Online (Sandbox Code Playgroud)
进口:
import Ordinal from '@shared/utils/Ordinal.jsx';
import Avatar from '@components/common/Avatar.jsx';
Run Code Online (Sandbox Code Playgroud)
由于某种原因@导致问题,所以当删除(在别名和导入中)时,它可以找到shared但components仍然无法解决.
FAIL src/shared/components/test/Test.spec.jsx
? Test suite failed to run
Cannot find module '@shared/utils/Ordinal.jsx' from 'Test.jsx'
Run Code Online (Sandbox Code Playgroud)
我尝试过使用jest-webpack-alias,babel-plugin-module-resolver和Jest/Webpack docs
The*_*ion 25
因为在我再次阅读之前我遇到了同样的问题,而这次更仔细的文档.正确的配置应该是:
"jest": {
"moduleNameMapper": {
"^@shared(.*)$": "<rootDir>/shared$1",
"^@components(.*)$": "<rootDir>/shared/components$1"
}
},
Run Code Online (Sandbox Code Playgroud)
spe*_*eak 19
这似乎已得到修复.
以下是工作设置:
版本
"jest": "~20.0.4"
"webpack": "^3.5.6"
的package.json
"jest": {
"moduleNameMapper": {
"^@root(.*)$": "<rootDir>/src$1",
"^@components(.*)$": "<rootDir>/src/components$1",
}
}
Run Code Online (Sandbox Code Playgroud)
webpack.shared.js
const paths = {
APP_DIR: path.resolve(__dirname, '..', 'src'),
};
exports.resolveRoot = [paths.APP_DIR, 'node_modules'];
exports.aliases = {
'@root': path.resolve(paths.APP_DIR, ''),
'@components': path.resolve(paths.APP_DIR, 'components'),
};
Run Code Online (Sandbox Code Playgroud)
kce*_*ent 15
使用:"jest": "^26.5.3",并且"webpack": "4.41.5",
我能够将我的 webpack/typescript 别名jest.config.js与此模式正确匹配:
网络包配置:
module.exports = {
// the rest of your config
resolve: {
alias: {
'components': path.resolve(__dirname, 'js/app/components'),
'modules': path.resolve(__dirname, 'js/app/modules'),
'types': path.resolve(__dirname, 'js/types'),
'hooks': path.resolve(__dirname, 'js/app/hooks'),
'reducers': path.resolve(__dirname, 'js/app/reducers'),
'__test-utils__': path.resolve(__dirname, 'js/app/__test-utils__')
}
},
}
Run Code Online (Sandbox Code Playgroud)
Jest.config.js:
moduleNameMapper: {
'^types/(.*)$': '<rootDir>/js/types/$1',
'^components/(.*)$': '<rootDir>/js/app/components/$1',
'^modules/(.*)$': '<rootDir>/js/app/modules/$1',
'^hooks/(.*)$': '<rootDir>/js/app/hooks/$1',
'^reducers/(.*)$': '<rootDir>/js/app/reducers/$1',
'^__test-utils__/(.)$': '<rootDir>/js/app/__test-utils__/$1'
}
Run Code Online (Sandbox Code Playgroud)
下面是对符号的解释:
(.*)$: 捕获精确匹配之后的任何内容(目录)$1: 将它映射到我指定的目录中的这个值。和 tsconfig.json:
"paths": {
"config": ["config/dev", "config/production"],
"components/*": ["js/app/components/*"],
"modules/*": ["js/app/modules/*"],
"types/*": ["js/types/*"],
"hooks/*": ["js/app/hooks/*"],
"reducers/*": ["js/app/reducers/*"],
"__test-utils__/*": ["js/app/__test-utils__/*"]
}
Run Code Online (Sandbox Code Playgroud)
Obe*_*ano 11
对于任何使用@asroot模块的人,您必须更具体,因为其他库可以使用@in 节点模块。
moduleNameMapper: {
"^@/(.*)$": "<rootDir>/src/$1"
},
Run Code Online (Sandbox Code Playgroud)
它翻译成“任何匹配的东西都@/应该发送到<rootDir>/src/<rest of the path>
ish*_*mal 10
建议的答案都不适合我。
能够通过以下模式解决它:
笑话版本 25+
moduleNameMapper: {
'^Screens(.*)': '<rootDir>/src/screens/$1',
'^Components(.*)': '<rootDir>/src/components/$1',
'^Assets(.*)': '<rootDir>/src/assets/$1',
'^Services/(.*)': '<rootDir>/src/services/$1',
},
Run Code Online (Sandbox Code Playgroud)
FWIW,尝试切换别名顺序,保持更具体的向上和不太具体的向下,例如
"moduleNameMapper": {
"^@components$": "<rootDir>/shared/components/",
"^@shared$": "<rootDir>/shared/"
}
Run Code Online (Sandbox Code Playgroud)
这真是疯狂,但是当我尝试像这样映射 package.json 中的模块时:
"jest": {
"moduleNameMapper": {
'@root/(.*)': '<rootDir>/../$1'
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用。
但是当我做同样的事情时jest.config.js,它会起作用:
module.exports = {
moduleNameMapper: {
'@root/(.*)': '<rootDir>/../$1'
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12737 次 |
| 最近记录: |