我正在使用节点、打字稿和其他包开发 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 不起作用)。我看到的链接:
请,如果有人知道如何解决相对路径地狱,如果您告诉我如何解决,我将不胜感激,并提供示例或其他帮助我的东西