2016-12-20 3 views
0

У меня есть проект, который запускает тестовые файлы с именем «* .test.ts» со шуткой и ts-jest. Это нормально, но когда я запускаю Webpack, я получаю ошибки для тестовых файлов:Как игнорировать тестовые файлы в webpack с ts-loader

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

Как я могу исправить WebPack конфигурацию, чтобы полностью игнорировать тестовые файлы?

Вот WebPack конфигурации:

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' 
     } 
    ] 
    } 
} 

[EDIT]

Я использовал функцию тестирования для входа увиденные файлы и тестовые файлы не появляются там, так что проблема не на WebPack включая неправильные файлы, но при неправильном написании машинописных файлов (потому что тесты отлично работают со шуткой).

ответ

2

Вы можете указать функцию вместо обычного выражения для свойства loader test; это может дать вам больший контроль.

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

Спасибо за указатель, но это не исправляет (я добавил комментарий). Проблема, похоже, в том, что с фильтрами типов not webpack ... – gaspard

0

Обнаружено. Моя версия «ts-loader» позади и почему-то не смогла должным образом обработать установленные @types.

Правило большого пальца: проблемы с упаковкой, сборкой, пересылкой: Обновления разработчика dev.

+0

Я попробовал обновление до последней версии, которая на данный момент составляет 2.1.0, но я уже в этой версии (и дважды проверен в папке 'node_modules' чтобы убедиться), и я все еще получаю эту точную проблему! Вы сделали что-нибудь еще или просто обновили версию? – Jonathan

+1

Убедитесь, что машинопись также обновлена ​​до последней версии (2.3.x в настоящее время) ... – gaspard

1

я в конечном итоге решения этого тоже, но по-другому, а именно, добавив следующие параметры моего .tsconfig файла:

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

Не знаю, почему это не придумали для ОП и Компания. Возможно, у них уже были эти настройки в файле .tslint (например, потому что их проект был сгенерирован или разветвлен из другого проекта).

Но похоже, что TypeScript (по крайней мере, с 2.3.2) обращает внимание на эти настройки и игнорирует эквивалентные настройки в webconfig.config.js.

Смежные вопросы