如何解析相对路径地狱(带打字稿的节点)

时间:2020-09-16 19:59:59

标签: node.js typescript relative-path tsconfig tsconfig-paths

我正在使用节点,打字稿和其他软件包来开发CLI。这个想法很简单,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

如果节点项目使用带有babel的javascript,我就实现了这一目标:

  • @ babel / polyfill
  • @ babel / cli
  • @ babel / core
  • @ babel / node
  • @ babel / preset-node
  • babel-plugin-module-resolver

但是我没有实现那是一个打字稿项目。 tsconfig.json具有“路径”选项,该选项在开发中有效,但是当我将打字稿编译为javascript时,此方法不起作用。我尝试了多种方法来解决该问题,但一切都失败了。这些是到目前为止我使用过的软件包:

  • link-module-alias()
  • 带有tsconfig-path的ts-node
  • ttypescript
  • @ zerollup / ts-transform-paths

第二个脚本可以正常工作,但是我必须对ts文件中的每个更改重新启动,也许我没有在package.json中正确配置脚本,因为tsc-watch无法正常工作)。我看到的链接:

请,如果有人知道如何解决相对路径地狱,如果您通过示例或帮助我的方式告诉我如何

,我将不胜感激。

0 个答案:

没有答案
相关问题