@Cruper
web-падаван

Как импортировать модуль относительно корня проекта в typescript?

/app
|--/src
|  |--currentfile.ts
|  |--anotherfile.ts
|
|--/env
   |--environment.ts


currentfile.ts
import { another } from './anotherfile';
import { environment } from 'env/environment';


Как можно настроить tsconfig.js так, чтобы такой импорт модулей работал? С импортом относительно текущего расположения проблем нет, т.е. anotherfile импортируется успешно. Но когда пытаюсь импортировать из корня проекта, а именно файл env/environment, webpack ругается, что модуль не найден в /app/src
baseUrl: '.' установлен

UPD.
Заметил еще, что проблема возникает при импорте Injectable класса. Не понимаю, каким образом это влияет на импорт относительно корня проекта.
  • Вопрос задан
  • 700 просмотров
Решения вопроса 1
@Cruper Автор вопроса
web-падаван
Проблему решил следующим образом.
Возможно где-то невнимательно прочитал документацию.
Коротко:
В tsconfig.ts прописать:
{
  "compilerOptions": {
    "baseUrl": ".", // корень проекта, в данном случае директория, где лежит конфиг
    "paths": [
       "env/*": ["env/*"]
    ]
  }
}

Подробнее:
Импорты относительно корня работают при условии наличия в tsconfig.json свойств baseUrl и paths.
А именно, если указать импорт
import { environment } from 'env/environment';
без указанных выше свойств в конфиге, искать модуль env/environment вебпак будет относительно файла, где этот импорт был произведен.
Для импорта относительно корня проекта в конфиге нужно прописать
{
  "compilerOptions": {
    "baseUrl": ".", // корень проекта, в данном случае директория, где лежит конфиг
    "paths": [
       "env/*": ["env/*"]
    ]
  }
}

Таким образом, встретив импорт, начинающийся с env/, вебпак будет искать модуль относительно baseUrl
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы