删除编译输出中的引用标记

Chr*_*oft 8 typescript

我正在.ts使用该命令将所有文件编译成一个文件

tsc -out app.js app.ts --removeComments
Run Code Online (Sandbox Code Playgroud)

基于npm使用说明.问题是它之后仍然保留了编译代码中的所有引用标记!据我所知,这些在JavaScript中没用.

例如,这些TypeScript文件

Application.ts

/// <reference path="../references/backbone.d.ts" />

module Example {
  export class Application extends Backbone.View<Backbone.Model> {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

app.ts

/// <reference path="Example/Application.ts" />

import Application = Example.Application;

class App extends Application {
  ...
}
Run Code Online (Sandbox Code Playgroud)

会编译成类似的东西

/// <reference path="../references/backbone.d.ts" />
var __extends = (this && this.__extends) || function (d, b) {
    ...
};
var Example;
(function (Example) {
    var Application = (function (_super) {
       ...
    })(Backbone.View);
    Example.Application = Application;
})(Example || (Example = {}));
/// <reference path="Example/Application.ts" />
var Application = Example.Application;
var App = (function (_super) {
    ...
})(Application);
//# sourceMappingURL=app.js.map
Run Code Online (Sandbox Code Playgroud)

sourceMappingURL我绝对要包括在内,--removeComments按预期工作在那里.但是当坐在服务器上时,参考标签看起来毫无意义.是否有从已编译源中删除这些选项的选项?或者我认为这些没有被使用(可能在使用源地图进行调试时)?

Chr*_*oft 7

正如评论中所指出的,有两种方法可以删除引用.

  1. 使用完全tsconfig.json消除了对/// <reference>标签的需求.例如:

    /// <reference path="../references/backbone.d.ts" />
    
    Run Code Online (Sandbox Code Playgroud)

    {
      "compilerOptions": {
        ...
      },
      "files": [
        'references/backbone.d.ts'
      ]
    }
    
    Run Code Online (Sandbox Code Playgroud)

    在...内tsconfig.json.

  2. 如果您不想使用配置文件,使用Closure Compiler之类的工具缩小编译的JavaScript 将删除所有注释和引用.

  • @Kokodoko您不使用`tsconfig.json`删除标签; 它删除了标签的*need*,因为您指定了要编译的每个文件.一旦每个文件都列在`files`数组中,就可以删除`/// <reference>`行.我已经更新了我的答案以添加此内容. (2认同)