我最近才意识到webpack的第一次运行将确保我的测试打字稿文件能够编译。之后没有任何变化。我尝试过移动文件,更改文件名等。我总是遇到同样的问题。我认为这是我的tsloader的问题,但是测试/\.tsx?$/
非常简单。
这是我的目录结构:
|~front/
| |~app/
| | |~ItineraryBuilder/
| | | |~__test__/
| | | | `-index.spec.tsx
| | | `-index.tsx
| | |+reducers/
| | |-index.tsx
| | `-setupEnzyme.ts
| `-index.html
|-.gitignore
|-index.js
|-jest.config.js
|-package.json
|-tsconfig.json
|-tslint.json
|-webpack.config.js
tsconfig.json
{
"compilerOptions": {
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es6",
"jsx": "react"
},
"include": [
"./front/app/**/*"
]
}
webpack.config.js“ ^ 4.0.0-alpha.3”
const webpack = require('webpack');
const path = require('path');
const APP_DIR = path.resolve(__dirname, 'front/app');
const config = {
entry: APP_DIR + '/index.tsx',
output: {
path: path.resolve(__dirname, 'front/assets/js/'),
filename: 'bundle.js'
},
devtool: 'source-map',
resolve: {
alias: { frontapp: path.resolve(__dirname, 'front/app') },
extensions: ['.js', '.jsx', '.ts', '.tsx']
},
module: {
rules: [
{ test: /\.css$/, loader: 'style-loader'},
{
test: /\.tsx?$/,
loader: 'ts-loader'
},
{ enforce: "pre", test: /\.js$/, loader: 'source-map-loader' },
{ enforce: "pre", test: /\.tsx?$/, loader: 'tslint-loader' },
{
test: /\.css$/,
loader: 'css-loader',
query: {
modules: true,
localIdentName: '[name]__[local]___[hash:base64:5]'
}
}
]
},
};
module.exports = config;
修改
好的,我敢肯定这是我的误解。我认为webpack不应构建我的测试文件。但是我把它们放在常规项目目录中。也许这是webpack中的错误。出于某种原因,我认为webpack也对文件进行了运行以进行测试,但事实并非如此。 Jest应该使用babel-jest或ts-jest构建文件,然后将使用moduleNameMapper
来模拟所有非js文件。
话虽这么说,但我不确定为什么webpack在__test__
目录中没有看到更新,但是我开始认为我应该将它们从构建路径中排除。
另一个编辑
我最终在自己的tsconfig中添加了paths
section,现在开玩笑地正确运行了测试。
相关的tsconfig.js配置
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"frontapp/*": ["front/app/*"]
}
}
}