首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TSify在浏览过程中忽略转换

TSify在浏览过程中忽略转换
EN

Stack Overflow用户
提问于 2016-02-09 20:32:26
回答 1查看 676关注 0票数 4

在基于gulp的工作流中,我试图在tsify编译之前对所有类型记录文件应用转换:

代码语言:javascript
复制
gulp.task(
  'deploy-typescript', 
  function() {
    var modulePath = configuration.files.typescript.entry;
    var bundleStream = browserify([modulePath])
      .transform(includeTemplates)
      .plugin(tsify)
      .bundle();

    return bundleStream
      .pipe(sourcestream(configuration.files.typescript.bundle))
      .pipe(gulp.dest(configuration.files.typescript.destination));
  }
);

var includeTemplates = function(file, options) {
  return through(function(buffer, encoding, next) {
    this.push('!test!');
    next();
  }
}

但是,tsify插件似乎忽略了我的插件对源文件所做的任何更改,并且使用了磁盘上存在的.ts文件。生成的包不包括我期望转换所做的任何更改。

EN

回答 1

Stack Overflow用户

发布于 2016-08-08 22:51:59

不幸的是,你发现的不是错误,而是设计的行为。

tsify使用类型记录的编译器API将TypeScript转换为JavaScript。具体来说,它实现了CompilerHost接口:

createProgram抽象出与CompilerHost接口中的底层系统的任何交互。CompilerHost允许编译器读取和写入文件,获取当前目录,确保文件和目录的存在,并查询一些底层系统属性,例如区分大小写和新的行字符。

转换不是逐文件执行的。相反,整个程序是编译的,其结果、转换后的文件保存在内存中,然后传递给Browserify。此编译涉及从磁盘读取文件的TypeScript编译器基础结构。

作者的评论是这里

如何在tsify编译前转换类型记录?不幸的是,由于体系结构的限制,这是不可能的。tsify必须从磁盘加载文件,因为它根据模块解析语义提取额外的文件。即使有可能通过预tsify转换管道传递这些额外的文件(我认为这是不太可能的),但这将是灾难性的失败。您必须将转换后的文件写入磁盘,然后再将它们拖到Browserify,对不起:/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35301615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档