更新到Typescript / webpack / jest无法看到的测试文件

时间:2018-10-04 11:17:30

标签: typescript webpack jestjs

我最近才意识到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/*"]
        }
    }
}

0 个答案:

没有答案