如何使用browserify从node_modules加载typescript模块?

时间:2016-02-29 18:20:09

标签: javascript node.js typescript gulp tsify

当我运行tsc时,一切都运行得很好。但是,我无法理解您是如何从节点模块导入其他打字稿模块的。

这是我的gulp文件的重要部分:

gulp.task('compile-ts', ['clean'], function(){
  var sourceTsFiles = [
    config.allTs,
    config.typings
  ];

  var bundler = browserify({
    basedir : "src",
    debug : true})
    .add("app.ts")
  //.add("typings/tsd.d.ts")
  .plugin(tsify);

  return bundler.bundle()
        .pipe(source("bundle.js"))
        .pipe(gulp.dest("build"))
        .pipe(buffer())
        .pipe(sourcemaps.init({loadMaps: true}))
        .pipe(sourcemaps.write({includeContent: false, sourceRoot: 'src'}));

});

当我使用时,

import {DataRepository, List} from "tsmvc";

tsmvc是一个打字稿模块节点模块,我得到cannot find module tsmvc. Atom没有抱怨并告诉我intellisense,tsc没有抱怨,但是tsify没有。 任何人都可以指点我做类似的gulp文件或解释这个过程吗?

这里是github回购:https://github.com/Davste93/typescript-mvc-consumer/blob/master/gulpfile.js

1 个答案:

答案 0 :(得分:1)

tsify版本0.15.3之前,无法从node_modules内导入TypeScript文件。

在内部,tsify插件会创建转换,而Browserify不会转换node_modules下的文件以进行非全局转换。在tsify的版本0.15.3中,添加了global选项,可以按如下方式指定:

var bundler = browserify({
    basedir: "src",
    debug: true
})
.add("app.ts")
.plugin(tsify, { global: true });