WebPack ts-loader, компилирующий все файлы, когда я хочу, чтобы он запускался только в одной папке / файле

Я обнаружил проблему в структуре моего приложения и процессе сборки с использованием WebPack, TypeScript и TS-Loader, которая, как я думал, была вызвана TypeScript 2.1.4, но, очевидно, присутствовала все время.

Вы можете увидеть все подробности из другого моего сообщения: TypeScript 2.1.4 критические изменения в ts-loader webpack

Короче говоря, у меня Gulp и WebPack установлены на точку входа /client/app.ts, в которой на данный момент почти ничего нет (конечно, ничего не ссылается на / server /), но этап компиляции TypeScript процесса сборки WebPack все еще пытается запускать на / server (и в другом моем сообщении, показывающем ошибку компиляции из папки сервера, когда он должен запускаться только из папки клиента).

Что я делаю не так и как это исправить, чтобы он работал только с файлами /client/.ts и, в частности, просматривал структуру из app.ts?

Вот мое репо, показывающее все, с чем я работал до сих пор: https://github.com/CmdrShepardsPie/test-ts-app/tree/develop

Спасибо


person Community    schedule 22.12.2016    source источник
comment
Глядя на ваш другой вопрос - я бы полностью удалил gulp из вашего проекта. Не похоже, что это дает вам какую-либо пользу, а только добавляет путаницы в конвейер сборки.   -  person Andy Ray    schedule 22.12.2016
comment
Вы можете исключить пути из загрузчиков с помощью exclude: /server\// в конфигурации загрузчика   -  person Andy Ray    schedule 22.12.2016
comment
Я использую Gulp для компиляции сервера, добавлю ссылку на репо к своему вопросу для полной справки.   -  person    schedule 22.12.2016
comment
Я бы не подумал, что мне нужно будет включать / исключать что-либо, если я передаю путь и / или файлы, над которыми нужно работать.   -  person    schedule 22.12.2016
comment
Почему бы не использовать только веб-пакет для компиляции сервера?   -  person Andy Ray    schedule 23.12.2016
comment
@AndyRay Я могу это сделать? (Здесь новичок в webpack), если вы посмотрите мой файл gulp, я запускаю послесловие node и обновляю его, когда он изменяется.   -  person    schedule 23.12.2016
comment
@ChrisSimpson, ты когда-нибудь с этим справлялся? Я испытываю то же самое, я ожидал, что все файлы TS не будут скомпилированы, но, видимо, это связано с тем, что компилятор машинописного текста делает это (см .: github.com/s-panferov/awesome-typescript-loader/issues/359, здесь упоминается компилятор awesome-typescript но концепция та же) ...   -  person Dave Goodchild    schedule 14.08.2017
comment
Я немного опоздал, но я только что столкнулся с той же проблемой и с ts-loader, и с awesome-typescript-loader. Решение (возможно, немного неэлегантное, но простое) - создать в любом месте пустой файл .ts и указать его как input в tsconfig.json. Таким образом, tsc будет обрабатывать файлы из загрузчика webpack и этот пустой файл каждый раз при его вызове, но оставит другие файлы в покое.   -  person user4520    schedule 29.10.2017
comment
Что мне очень помогло, так это переключение моей настройки монорепозитория на использование ссылок на проекты Typescript, как описано здесь. Потребовалось немного поработать, чтобы его настроить, но теперь все работает нормально.   -  person Venryx    schedule 30.06.2021


Ответы (1)


Вы можете обойти эту ошибку, указав опцию onlyCompileBundledFiles в вашем webpack.config.js вот так

module: {
    rules: [
        {
            test: /\.tsx?/,
            use: [{loader: 'ts-loader', options: {onlyCompileBundledFiles: true}}],
        }
    ],
},

Меня все еще удивляет, что ts-loader по умолчанию не работает, но, по крайней мере, есть обходной путь.

person Antimony    schedule 20.12.2017
comment
Это ответ. Спасибо. - person pwray; 16.03.2018
comment
Спасибо за это, это решает проблему, с которой я столкнулся, когда все мое приложение Express (построенное на TypeScript) было включено в мой общедоступный каталог (где компилируется Webpack), а не только мой выводимый пакет. - person tomhughes; 26.04.2018
comment
Просто обновление, сейчас 2020 год, и ts-loader ВСЕ ЕЩЕ демонстрирует это глупое поведение. Я не понимаю, почему он автоматически компилирует ВСЕ файлы ts, но, по-видимому, мы живем в этом мире. Bonkers. - person dudewad; 13.01.2020
comment
Спасибо @dudewad за подтверждение в 2020 году - я также собирался удалить все, чтобы найти эту ошибку - person Cameron; 28.03.2020
comment
Удивительно, но спустя 3 года все еще не работает. - person Chris Hawkes; 15.09.2020
comment
Имейте в виду, что это нарушает совместимость с глобальными файлами .d.ts или определениями других типов, которые не являются частью ваших импортированных файлов. - person Guido Bouman; 27.01.2021