当前位置:  开发笔记 > 编程语言 > 正文

Typescript编译为单个文件

如何解决《Typescript编译为单个文件》经验,为你挑选了1个好方法。

我正在使用TS 1.7,我正在尝试将我的项目编译为一个大文件,我将能够包含在我的html文件中.

我的项目结构如下所示:

-build // Build directory
-src // source root
--main.ts // my "Main" file that uses the imports my outer files
--subDirectories with more ts files.
-package.json
-tsconfig.json

我的tsconfig文件是:

 {
  "compilerOptions": {
    "module":"amd",
    "target": "ES5",
    "removeComments": true,
    "preserveConstEnums": true,
    "outDir": "./build",
    "outFile":"./build/build.js",
    "sourceRoot": "./src/",
    "rootDir": "./src/",
    "sourceMap": true
  }
}

当我构建我的项目时,我希望build.js文件是从我的源代码编译的一个大文件.但是build.js文件是空的,我把所有文件都编译成了js文件.

我的每个TS文件看起来都像这样

import {blabla} from "../../bla/blas";

export default class bar implements someThing {
    private variable : string;
}

我究竟做错了什么 ?



1> toskv..:

这将在TypeSript 1.8中实现.对于该版本,当模块amdsystem时,outFile选项可以工作.

此时,该功能在Typescript的开发版本中可用.要安装该运行:

$ npm install -g typescript@next

对于以前的版本,即使不明显,模块outFile选项也无法一起工作.

您可以查看此问题以获取更多详细信息.


如果要输出版本低于1.8的单个文件,则无法使用tsconfig.json中module选项.相反,您必须使用module关键字创建名称空间.

您的tsconfig.json文件应如下所示:

{
  "compilerOptions": {
    "target": "ES5",
    "removeComments": true,
    "preserveConstEnums": true,
    "outFile": "./build/build.js",
    "sourceRoot": "./src/",
    "rootDir": "./src/",
    "sourceMap": true
  }
}

您的TS文件也应如下所示:

module SomeModule {
  export class RaceTrack {
    constructor(private host: Element) {
      host.appendChild(document.createElement("canvas"));
    }
  }
}

而不是使用import语句,您将不得不引用按命名空间导入.

window.addEventListener("load", (ev: Event) => {
  var racetrack = new SomeModule.RaceTrack(document.getElementById("content"));
});


使用TypeScript 3.x有更好的方法吗?
我编辑了答案以包含@next部分,这样就更清楚了.:)
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有