如何为typescript编译器配置`baseUrl`?

时间:2016-06-27 16:46:54

标签: typescript

我有一个使用requireJS的模块构建的网站。我想在这个项目上开始使用TypeScript(1.8,Visual Studio 2015),并尝试重写其中一个模块。

目前我的模块如下:

// file: ProjectFoo/app/dashboard/viewProfile.js
define(["services/datasvc"], function (datasvc) {
    datasvc.getData(...).then(...);
});

文件datasvc.js位于以下路径:ProjectFoo/services/datasvc.js

要使{J}可以访问{J},我已配置了以下路径(requireJS配置):

datasvc.js - > services

重写我的模块后,我使用以下构造导入./services(注意:TypeScript编译器配置为使用datasvc模块结构。)

amd

但是这不起作用,因为TypeScript将import * as datasvc from "services/datasvc"; 视为相对于当前文件的路径。但是,如果我按如下方式重写该import语句,则TypeScript [compiler]成功:

services/datasvc

然而,这会导致import * as datasvc from "../../services/datasvc"; 使用相对路径导入,即生成代码如下所示:

datasvc

这里的问题是我必须更改define(["require", "exports", "../../services/datasvc"]... 的数量以包含在模块路径中,具体取决于我所在文件的嵌套深度。

问题: 有没有办法使用../并以某种方式配置TypeScript来处理requireJS的相同方式?

1 个答案:

答案 0 :(得分:13)

You'll need typescript 2.0 or above in order to configure a base url.

如发行说明中所述,您可以创建一个包含以下内容的tsconfig.json文件:

{
  "compilerOptions": {
    "baseUrl": "./modules"
  }
}
     

现在可以在./modules/moduleA

中查找导入到“moduleA”的内容
import A from "moduleA";

附注:许多开发人员依赖gulp或类似工具来编译typescript,而不是直接使用typescript编译器。如果您依赖其中一个工具,则必须确保您的工具从tsconfig.json中获取这些新选项,如baseUrl,并将其传递给typescript编译器。