Динамический импорт модулей во время компиляции Webpack с Typescript - PullRequest
1 голос
/ 14 апреля 2019

Я пытаюсь создать каркас для хобби-проекта, в котором у меня есть произвольное количество определений объектов, каждое в своем собственном файле Typescript.Затем у меня есть фабрика, которая создает объекты на основе этих определений по запросу.

Например, при вызове createEntity('Player') фабрика будет использовать определение с именем Player для создания новой сущности.

Поскольку в проекте может быть большое количество этих файлов определений, я не хочу вручную импортировать их все в заводской модуль.Поскольку я использую Webpack, я думаю, что каким-то образом можно найти все файлы, которые соответствуют глобу, например .entity.ts, и импортировать их в заводской модуль во время компиляции .Однако я не совсем уверен, как это сделать.

Я нашел несколько упоминаний о context api , который, кажется, делает то, что мне нужно, но из примеров, которые я видел, я не смогпонять, как на самом деле использовать его в моем заводском модуле.TSC также жалуется, что не может найти имя require, когда я помещаю следующие строки в свой модуль:

function importAll(r) {
  r.keys().forEach(r);
}
importAll(require.context('.', true, /\.entity\.ts/));

Так как я могу включить все мои файлы определений в комплект Webpack и импортировать их вмой заводской модуль без ручной записи импорта?

1 Ответ

0 голосов
/ 14 апреля 2019

Найден выход.Сначала я должен был установить пакет @types/webpack-env и @types/node как зависимости dev.

Затем следующий код в моем модуле фабрики выбирает и импортирует мои определения:

function importAll(r) {
  return r.keys().map(r);
}

const knownEntities = importAll(require.context('../..', true, /\.entity\.ts$/));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...