Typescript2路径模块分辨率

时间:2017-02-13 06:03:34

标签: node.js typescript gulp typescript2.0 gulp-typescript

tl; dr:模块解析不适用?

您好,

我正在使用Typescript2模块解析功能。

我注意到现在可以指定“路径”,以便您可以执行以下操作:

旧方式

import {a} from "../../../foo"

新方法

import {a} from "services/foo"

为此,您需要为tsconfig.json添加一些配置

    "compilerOptions": {
        "baseUrl": ".",
        "paths": {
            "services/*": ["./application/core/services/*"],
        }
    }

我遇到的问题是,在编译时,导入实际上并没有改变。我的javascript输出仍然包含从“services / foo”导入的内容,因此显然在我的节点服务器上运行时崩溃。

我使用gulp-typescript编译我的javascript文件:

var tsProject = ts.createProject("tsconfig.json");
return tsProject.src()
    .pipe(sourcemaps.init())
    .pipe(tsProject()).js
    .pipe(sourcemaps.write("../api"))
    .pipe(gulp.dest(function(file) {
        return file.base;
}));

我完全迷失在这里,并希望使用该模块解决方案,以便我可以摆脱那个../../进口的地狱。任何帮助都会受到赞赏!

1 个答案:

答案 0 :(得分:1)

这里的问题是JavaScript引擎对您的TypeScript配置一无所知,您在tsconfig中指定的内容仅用于#34;编译时间",当您将TypeScript编译为JS时,您需要执行与TS编译器完成的工作相同,但是将已解析的路径保存在JS文件中。

简而言之,需要处理所有JS文件,并将别名替换为" real"路径。

提示:使用npm工具tspath(https://www.npmjs.com/package/tspath),它需要0配置,只需在项目的某个地方运行它,所有JS文件都将被处理并准备好运行!