网站搜索

Typescript/ES6:使用绝对路径导入源文件


在我的一个文件中,我用以下方式导入另一个 commonjs 模块

import * as at from '../../../at-angular'

我更愿意做

import * as at from 'fv/at-angular'

其中 fv 是我的 src 目录。所以我的应用文件夹结构如下:

- src
  - at-angular.ts
  - core
    - services
  ....

我能否以某种方式让 TypeScript 使 fv 指向 src?

答案#1

TypeScript 1.8(尚未发布)将具有路径映射功能:

路径映射

有时候模块并不直接位于 baseUrl 之下。在这种情况下,可以使用路径映射来控制位置的计算。路径映射使用以下 JSON 结构来指定:

{
    "paths": {
        "pattern-1": "substitution" | ["list of substitutions"],
        "pattern-2": "substitution" | ["list of substitutions"],
        ...
        "pattern-N": "substitution" | ["list of substitutions"]
    }
}

模式和替换是可以包含零个或一个星号('*')的字符串。模式和替换的解释将在解析过程部分描述。

https://github.com/Microsoft/TypeScript/issues/5039

这可能就是你在寻找的。

答案#2

我创建了一个用于源代码的 gist,以使用绝对路径名或 tsconfig.json 中定义的任何其他路径。它在 Browserify+Watchify+Tsify 中运行良好,也适用于 Gulp-typescript。

https://gist.github.com/azarus/f369ee2ab0283ba0793b0ccf0e9ec590

它将 tsconfig.json 中定义的路径名和 baseUrl 转换为它们的相对路径名。享受吧!

相关文章