typescript - Hur man ignorerar testfiler i webpack med ts-loader


Jag har ett projekt som kör testfilerna som heter "*.test.ts" med jest och ts-jest. Det är bra, men när jag startar webpack får jag fel för testfilerna:

ERROR in /some/path/note.test.ts
(27,3): error TS2304: Cannot find name '

Hur kan jag fixa webpack-konfigurationen så att testfiler helt ignoreras?

Här är webpack-konfigurationen:

const path = require ( 'path' )

module.exports =
{ entry: './src/boot.tsx'
, node:
  { __dirname: false
  }
, output:
  { path: path.resolve ( __dirname, 'app', 'build' )
  , filename: 'app.js'
  , publicPath: '/live-reload/'
  }
, devtool: 'source-map'
, resolve:
  { extensions: ['', '.js', '.ts', '.tsx']
  }
, module:
  { loaders:
    [ { test: /\.tsx?$/
      , exclude: /node_modules/
      , loader: 'ts-loader'
      }
    ]
  }
}

[REDIGERA]

Jag använde testfunktionen för att logga sedda filer och testfilerna syns inte där, så problemet ligger inte på att webpack inkluderar fel filer utan på att TypeScript beter sig konstigt (eftersom testerna fungerar bra med jest).

Svar #1

Jag slutade med att lösa detta också, men på ett annat sätt, nämligen genom att lägga till följande inställningar i min .tsconfig-fil:

"include": [
    "./lib/**/*"
],
"exclude": [
    "./lib/__tests__"
]

Inte säker på varför detta inte kom upp för OP och företaget. Kanske hade de redan dessa inställningar i sin .tslint-fil (t.ex. för att deras projekt hade genererats eller forkats från ett annat projekt).

Men det ser ut som att TypeScript (åtminstone från version 2.3.2) tar hänsyn till dessa inställningar och ignorerar motsvarande inställningar i webconfig.config.js.

Svar #2

Du kan ange en funktion istället för det reguljära uttrycket för loaderns test-egenskap; detta kan ge dig mer kontroll.

test: function (modulePath) {
  return modulePath.endsWith('.ts') && !modulePath.endsWith('test.ts');
}

Relaterade artiklar