ts-loader vs awesome-typescript-loader

ts-loaderawesome-typescript-loader 都是适用于 webpacktypescript loader,可以用于

Google 提供的对比信息

[资料] ts-loader vs awesome-typescript-loader - 图1
从上图我们可以看出来两者的 stars 很接近,ts-loader 在最近有过更新,而 awesome-typescript-loader 则是在去年底更新过。

ts-loader 和 awesome-typescript-loader 简介

二者都是作为 webpackloader 存在,用于支持 webpack 来编译 ts 文件。

ts-loader 用法

1、安装 ts-loader

  1. yarn add ts-loader --dev

或者

npm install ts-loader --save-dev

2、 配置 webpack.config.js

// webpack.config.js
module.exports = {
  mode: "development",
  devtool: "inline-source-map",
  entry: "./app.ts",
  output: {
    filename: "bundle.js"
  },
  resolve: {
    // 添加 .ts 和 .tsx 作为可以解析的文件名
    extensions: [".ts", ".tsx", ".js"]
  },
  module: {
    rules: [
      // 所有带有`.ts`或`.tsx`扩展名的文件都将由`ts-loader`处理
      { test: /\.tsx?$/, loader: "ts-loader" }
    ]
  }
};

awesome-typescript-loader 用法

1、安装 awesome-typescript-loader

npm install awesome-typescript-loader --save-dev

2、 配置 webpack.config.js

module.exports = {
  resolve: {
    // 添加 .ts 和 .tsx 作为可以解析的文件名
    extensions: [".ts", ".tsx", ".js", ".jsx"]
  },
  module: {
    rules: [
      {
        // 所有带有`.ts`或`.tsx`扩展名的文件都将由`awesome-typescript-loader`处理
        test: /\.tsx?$/,
        loader: "awesome-typescript-loader"
      }
    ]
  }
};

更多具体的用法大家可以参考官方文档:
ts-loaderawesome-typescript-loader

ts-loader 和 awesome-typescript-loader 对比

在作者的介绍中,作者对二者主要的不同做出了分析:
awesome-typescript-loader 能够加速项目中一些非常大的文件编译速度,同时可以完全控制项目文件编译方式。主要有两个要点:

  • atl 与 Babel 有一流的集成,可以实现缓存。这对于使用带有 Babel 的 Typescript 的人来说非常有用。当启用 useBabel 和 useCache 标志时,typescript 的 emit 将使用 Babel 进行转换并缓存。所以下次如果源文件(+environment) 具有相同的 checksum ,可以完全跳过 typescript 和 babel 的转换。这大大减少了此方案中的构建时间。
  • atl 能够将类型检查器和发射器分叉到一个单独的进程,这也加快了一些开发方案(例如与 react-hot-loader 的反应)所以 webpack 编译将提前结束,可以在浏览器中探索编译版本你的文件是 typechecked。