TypeScript, Webpack, модули в стиле ES6, но ориентированные на ES5

Можно ли использовать TypeScript и Webpack для таргетинга на ES5, но писать модули в стиле ES6?

Я хочу писать такие модули:

export class MyClass {
}

И импортируйте их так:

import {MyClass} from "Path/To/MyClass";

Это отлично работает с SystemJS и tsconfig следующим образом:

 "compilerOptions": {
    "target": "es5",
    "module": "system",
 }

Но я бы хотел использовать Webpack вместо SystemJS.

С «системой» в качестве настройки модуля я, естественно, получаю «Система не определена» как консольную ошибку.

Я новичок в webpack, но, возможно, я могу использовать какую-то комбинацию ts-loader и babel-loader? Я просто не могу найти подходящую конфигурацию.


person user888734    schedule 20.04.2016    source источник


Ответы (1)


Да, ты можешь. В версии 1 Webpack (которая является текущей) система не поддерживается. Вы должны настроить таргетинг модуля на commonjs следующим образом:

"compilerOptions": {
    "target": "es5",
    "module": "commonjs",
 }

Версия 2 webpack будет поддерживать системные модули.

person thitemple    schedule 20.04.2016
comment
Спасибо! Но когда у меня установлены commonjs в tsconfig, языковая служба / компилятор VSCode / TypeScript / что бы там ни было, становится недовольным и говорит, что не может найти модуль - person user888734; 20.04.2016
comment
Так что, вероятно, проблема в вашем коде. Можете ли вы опубликовать пример того, как вы объявляете / потребляете свои модули? - person thitemple; 20.04.2016
comment
Ваш ответ на мой другой вопрос был той же проблемой: stackoverflow.com/questions/36751019/webpack-export-const - person user888734; 21.04.2016