5

我正在使用节点、打字稿和其他包开发 CLI。这个想法很简单,CLI 为您的节点项目(javascript 或 typescript)提供了一个初始结构

好吧,在测试的时候,我发现了一个我好几天都无法解决的问题。初始结构为:

├────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)

typescript services 文件扩展了一个抽象服务(这个在 中./src/global/services/abstract.service.ts)。每个组件都将位于./src/api目录中并具有其各自的文件夹(如用户组件)。在 users 组件中导入抽象类的相对路径是../../global/services/abstract.service

但是您可以在不同的目录中创建组件,因此之前的相对路径不起作用。为了解决这个问题,我决定使用像 webpack 这样的路由配置。所以我不想使用以前的相对路径,而是想使用这样的东西@global/services/abstract.service

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

  • @babel/polyfill
  • @babel/cli
  • @babel/核心
  • @babel/节点
  • @babel/预设节点
  • babel-plugin-module-resolver

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

  • 链接模块别名 ()
  • 带有 tsconfig-path 的 ts-node
  • 打字稿
  • @zerollup/ts-transform-paths

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

请,如果有人知道如何解决相对路径地狱,如果您告诉我如何解决,我将不胜感激,并提供示例或其他帮助我的东西

4

0 回答 0