【问题标题】:root path for typescript module resolutiontypescript 模块解析的根路径
【发布时间】:2016-05-31 01:18:25
【问题描述】:

我有两个使用打字稿的项目。一个是核心项目:moduleA,另一个是业务项目:moduleB。 ProjectB 使用位于 /scripts 文件夹中的 projectA 的模块(ts 文件)。我想通过projectA/scripts为projectB指定模块解析根文件夹。顺便说一句:项目之外的项目将在生产中合并。

这是我的文件结构

├───projectA
│   │   index.html
│   │   systemjs.config.js
│   │   tsconfig.json
│   │
│   └───scripts
│       └───core
│           │   app.ts
│           │   components.ts
│           │
│           └───components
│                   dropdown.ts
│
└───projectB
    │   tsconfig.json
    │
    └───scripts
        └───pages
                page.ts

例如:在 projectB 的page.ts 我想导入如下的核心模块。

import { DropdownList } from 'core/components';

其实我就是这样做的。 page.ts 的 JavaScript 输出工作正常。但我需要修复 typescript 编译错误:cannot find module "core/components"

我可以通过在模块B 中使用npm install/link projectA/scripts 或符号链接来实现。 但我需要通过tsconfig.json 或某种声明文件/references.d.ts/ 的选项来解决它。因为,我们有数百个项目类型的项目B。 npm link 或符号链接对我们来说会很尴尬。

有什么简单的方法吗?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    有什么简单的方法吗

    您需要在 tsconfig.json 中使用两件事:

    • rootDirs 告诉 projectA/scriptsprojectB/scripts 彼此相邻。 (警告:您的编译时环境是否支持它?)。
    • baseUrl 如果你想使用 core/components 而不是完整的相对路径 ./core/components (警告:你的模块加载器支持它吗?)。

    这两个都支持http://alm.tools/?

    【讨论】:

    • 谢谢@basarat。我听说了。这正是我所需要的。我正在使用 typescript@1.7.3。哪个版本的 typescript 支持 rootDirsbaseUrltypescript compiler options的官方文档中没有这些选项。
    • 在官方文档中尚未记录这些功能的同时,有关更多信息,请参阅此问题:github.com/Microsoft/TypeScript/issues/5039
    猜你喜欢
    • 2021-11-10
    • 2022-01-15
    • 2023-04-07
    • 2017-07-01
    • 2019-05-05
    • 2017-06-26
    • 2020-05-06
    • 2021-03-29
    • 2022-01-04
    相关资源
    最近更新 更多