Как разрешить ад относительного пути (узел с машинописным текстом)
Я разрабатываю интерфейс командной строки, используя 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-часы не работали). Ссылки, которые я видел:
- Требовать абсолютное вместо относительного
- ttypescript
- ts-transform-paths
- ссылка-модуль-псевдоним
- Относительный путь в ад
- пути tsconfig
Пожалуйста, если кто-нибудь знает, как решить ад относительного пути, я буду признателен, если вы расскажете мне, как, с примерами или чем-то, что поможет мне