Typescript предотвращает импорт из определенного каталога в проекте - PullRequest
0 голосов
/ 30 сентября 2018

Интересно, есть ли способ запретить всем файлам в определенной области импортировать любой файл из другой второй области?Пример:

Учитывая эту структуру проекта:

project/
├── node_modules/
├── test/
├── src/
│   ├── domain/
│   │   ├── SomeModelClass.ts
│   ├── application/
│   │   ├── SomeApplicationConcern.ts
│   ├── database/
│   │   ├── SomeRepository.ts
├── tsconfig.json
└── tslint.json

Я хотел бы применить хотя бы некоторые из этих правил:

  • SomeApplicationConcern может импортировать код изгде угодно.
  • SomeRepository может не код импорта из application
  • SomeModelClass может не код импорта ни из application, ниdomain.

Может ли это быть достигнуто с помощью вложенных tsconfig.json файлов?
Может ли это быть достигнуто с помощью некоторых причудливых tslint правил?

Понятия не имеюесли что-нибудь подобное возможно.Я хотел бы получить ошибку компиляции (или ошибку tslint, которая установлена ​​в error серьезность в моем проекте), если обнаружена запрещенная зависимость.

1 Ответ

0 голосов
/ 30 сентября 2018

Несколько идей, основанных на некоторых быстрых онлайн-исследованиях:

  1. good-fences - это специальный инструмент для ограничения импорта в проекте TypeScript.Вам нужно добавить его в процесс сборки как отдельный шаг.
  2. Скомпилируйте код TypeScript с module, установленным на es6 (в отдельный выходной каталог, если вам нужна другая настройка moduleдля генерации кода, который вы на самом деле выполняете), а затем запустите ESLint с no-restricted-imports правилом на выходе.
  3. Настройте как среду выполнения, так и tsconfig.json, чтобы вы могли использоватьтолько не относительный импорт, а затем используйте правило no-relative-imports из tslint-microsoft-contrib.Тем не менее, говорилось об устаревании no-relative-imports.
  4. Напишите свое собственное повторное воплощение ESLint no-restricted-imports на основе TSLint и добавьте его в tslint-eslint-rules .
...