TypeScript 如何将多个typescript文件编译为单个输出js文件

TypeScript 如何将多个typescript文件编译为单个输出js文件

TypeScript是JavaScript的一个强类型扩展,编译为普通JavaScript。TypeScript添加了静态类型检查、类和接口到语言中,使得编写和维护大型应用程序更容易。TypeScript文件被编译为JavaScript文件,可以在任何支持JavaScript的浏览器或服务器上运行。本文将介绍如何将多个TypeScript文件编译为单个输出js文件。

我们将首先看一下如何使用TypeScript编译器将多个TypeScript文件编译成单个JavaScript文件,然后再看一下如何使用Webpack将多个TypeScript文件打包成单个JavaScript文件。

使用tsc编译多个TS文件为单个JS文件

TypeScript编译器是一个命令行工具,可以用于将TypeScript代码编译为JavaScript。要安装TypeScript编译器,请打开终端并运行以下命令 –

npm install -g typescript

接下来,我们需要在项目的根目录中创建一个 tsconfig.json 文件。这个 tsconfig.json 文件包含了TypeScript编译器的配置选项。

下面是一个示例的tsconfig.json文件:

{
   "compilerOptions": {
      "target": "ES2015",
      "outFile": "out/bundle.js",
      "module": "amd",
      "sourceMap": true,
   },
   "include": [
      "src/**/*.ts"
   ]
}

在这个示例配置中,我们使用了TypeScript编译器的选项,如 target,outFile,module,sourceMapinclude 。这些选项指定了ECMAScript版本,设置为 ES2015 ,输出文件名设置为 out/bundle.js ,模块系统有两个选项 amdsystem ,并设置为 amd ,源映射生成设置为true,并指定要包含在编译中的文件。我们已经指定了 src 目录及其子目录中的所有文件都要包括在编译中。

要编译我们的TypeScript代码,我们可以在终端中运行以下命令 −

tsc

这将编译位于”src”目录及其子目录下的所有TypeScript文件,并将其合并为一个位于”out/bundle.js”的JavaScript文件。

示例1

在这个示例中,我们将创建两个TypeScript文件,即src/index.ts和src/app.ts。按照以下命令创建这些文件:

$ touch src/app.ts src/index.ts
$ touch tsconfig.json

现在,我们将通过设置 tsconfig.json 来配置TypeScript编译器。

touch tsconfig.json

现在,将上面的配置选项复制到 tsconfig.json 文件中,修改 outFile 值为 out/bundle.js

同时,将以下代码粘贴到相应的文件中 −

src/app.ts

export default interface Person {
   firstName: string, 
   lastName: string,
   sayHello(): void, 
}

这声明并导出了一个名为 Person 的接口,具有两个属性 firstNamelastName 以及一个方法 sayHello

src/index.ts

import Person from "./app"
class Employee implements Person {
   firstName: string 
   lastName: string 

   constructor (firstName: string, lastName: string) {
      this.firstName = firstName,
      this.lastName = lastName
   }
   sayHello() {
      console.log(`Hello, ${this.firstName + this.lastName}`)
   }
}
const obj = new Employee("Aditya", "Singh")
obj.sayHello()

这个文件导入了导出的 Person 接口,并对其进行了实现。

现在,要编译所有这些(在这种情况下是两个文件),运行以下命令-

tsc

输出

out/bundle.js

define("app", ["require", "exports"], function (require, exports) {
   "use strict";
   Object.defineProperty(exports, "__esModule", { value: true });
});
define("index", ["require", "exports"], function (require, exports) {
   "use strict";
   Object.defineProperty(exports, "__esModule", { value: true });
   class Employee {
      constructor(firstName, lastName) {
         (this.firstName = firstName), (this.lastName = lastName);
      }
      sayHello() {
         console.log(`Hello, ${this.firstName + " " + this.lastName}`);
      }
   }
   const obj = new Employee("Aditya", "Singh");
   obj.sayHello();
});
//# sourceMappingURL=bundle.js.map

将创建一个新文件 out/bundle.js ,其中包含一个编译的JS文件。这个编译后的JS文件包含 AMD(异步模块定义) 模块,要在Node.js中运行这些模块,我们首先需要将其转换为Node.js可以理解的格式,可以使用webpack或者rollup打包工具来完成。这就是使用tsc将多个TypeScript文件编译成单个TypeScript文件的限制。

使用Webpack将多个TS文件编译成单个JS文件

Webpack是一个流行的用于现代web开发的构建工具,它可以用来打包和优化JavaScript文件,但它也内置了对TypeScript的支持。Webpack在幕后使用tsc来编译 .ts 文件。通过 ts-loader 作为 webpacktsc 之间的粘合剂。所以,您仍需要您的 tsconfig.json 文件。

示例2

我们将在之前的示例基础上构建,并使用 webpack 将之前创建的两个TypeScript文件编译成单个JS文件。

要使用webpack将TS文件编译为JS文件,您需要安装必要的依赖项,包括 webpack,webpack-clits-loader

npm install webpack webpack-cli ts-loader

一旦您已经安装了这些依赖项,您可以在您的项目目录中创建一个 Webpack 配置文件, webpack.config.js 。下面是一个示例配置文件:

配置文件 (webpack.config.js) −

const path = require('path');
module.exports = {
   entry: './src/app.ts',
   mode: 'development',
   devtool: 'inline-source-map',
   watch: true,
   output: {
      filename: 'bundle.js',
      path: path.resolve(__dirname, 'dist'),
   },
   resolve: {
      extensions: ['.ts', '.js'],
   },
   module: {
      rules: [
         {
            test: /\.ts$/,
            use: 'ts-loader',
            exclude: /node_modules/,
         },
      ],
   },
};

在这个配置文件中, entry 属性指定了你的应用程序的入口点,它是一个TypeScript文件(本例中是app.ts)。 mode 属性指定了构建模式(本例中是development), devtool 属性指定了源码映射类型。 output 属性指定了输出文件名和目录, resolve 属性指定了要解析的文件扩展名。最后, module 属性指定了不同文件类型的加载器,包括TS文件的。 将 watch 选项设置为true,指定 Webpack 在后台运行,并在检测到.ts文件保存的更改时自动进行编译。 要编译所有的.ts文件(在这种情况下是src/index.ts和src/app.ts),我们只需要运行-

npx webpack

这将创建一个包含单个捆绑的.js文件的 dist/bundle.js 文件。

输出

将会创建一个新文件 dist/bundle.js ,您可以在 Node.js 环境中运行。

node dist/bundle.js

在终端中,您将获得输出如下:

Hello, Aditya Singh

结论

我们讨论了将多个TypeScript文件编译成单个JavaScript文件的两种方法 – 使用TypeScript编译器或使用Webpack。TypeScript编译器简单且需要最少的配置,但只支持 AMDsystem 模块。同时,Webpack可以生成几乎所有类型的JS模块,如 commonjs ,但配置更复杂。根据项目需求可以选择其中任何一种方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

TypeScript 精选笔记