Как разрешить ад относительного пути (узел с машинописным текстом)

Я разрабатываю интерфейс командной строки, используя node, typescript и другие пакеты. Идея проста, CLI дает вам начальную структуру для ваших проектов узлов (javascript или машинописный текст)

Во время тестирования я обнаружил проблему, которую не мог решить несколько дней. Исходная структура:

├────src
│    ├───api
│    │   └───users
│    │        ├───users.controller.ts/js
│    │        ├───users.interface.ts (just for typescript projects)
│    │        ├───users.routes.ts/js
│    │        └───users.service.ts/js
│    ├───config
│    │   └────environments
│    │        ├───development.ts/js
│    │        ├───index.ts/js
│    │        └───production.ts/js
│    ├───global
│    │   └───services
│    │        └───abstract.service.ts (just for typescript projects)
│    ├───middlewares
│    ├───database.ts/js
│    ├───index.ts/js
│    └───server.ts/js
├───.editorconfig
├───.env
├───.gitignore
├───package.json
├───package-lock.json
└───tsconfig.json (just for typescript projects)

Файлы служб машинописного текста расширяют абстрактную службу (эта находится в ./src/global/services/abstract.service.ts). Каждый компонент будет в ./src/apiкаталог и иметь соответствующую папку (например, компонент пользователей). Относительный путь для импорта абстрактного класса в пользовательский компонент: ../../global/services/abstract.service

Но вы можете создать компонент в других каталогах, поэтому предыдущий относительный путь не работает. Чтобы решить эту проблему, я решил использовать конфигурацию маршрутов, такую ​​как webpack. Поэтому вместо использования предыдущего относительного пути я хочу использовать что-то вроде этого @global/services/abstract.service

Я добился этого, если проект узла использовал javascript с babel:

  • @babel/polyfill
  • @babel/ cli
  • @babel/ core
  • @babel/ узел
  • @babel/ предустановленный узел
  • babel-plugin-module-resolver

Но я не добился этого, когда есть проект машинописного текста. В tsconfig.jsonимеет параметры "пути", это работает в разработке, но когда я компилирую машинописный текст в javascript, это не работает. Я пробовал много способов решить эту проблему, но ничего не вышло. Вот пакеты, которые я использовал до этого:

  • ссылка-модуль-псевдоним ()
  • ts-узел с tsconfig-path
  • ttypescript
  • @ zerollup / ts-transform-paths

Второй работает правильно, но я должен перезапускать его для каждого изменения, которое я вношу в ts-файлах, возможно, я неправильно настроил скрипты в package.json, потому что tsc-часы не работали). Ссылки, которые я видел:

Пожалуйста, если кто-нибудь знает, как решить ад относительного пути, я буду признателен, если вы расскажете мне, как, с примерами или чем-то, что поможет мне

0 ответов

Другие вопросы по тегам