chst365's blog chst365's blog
首页
  • Git
  • 网络
  • 操作系统
  • 浏览器
  • webpack
  • JavaScript
  • TypeScript
  • 性能
  • 工程化
  • React
  • 编程题
  • React技术揭秘
  • 算法
  • Node
  • 编码解码
  • NodeJS系列
  • Linux系列
  • JavaScript系列
  • HTTP系列
  • GIT系列
  • ES6系列
  • 设计模式系列
  • CSS系列
  • 小程序系列
  • 数据结构与算法系列
  • React系列
  • Vue3系列
  • Vue系列
  • TypeScript系列
  • Webpack系列
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

chst365

DIV工程师
首页
  • Git
  • 网络
  • 操作系统
  • 浏览器
  • webpack
  • JavaScript
  • TypeScript
  • 性能
  • 工程化
  • React
  • 编程题
  • React技术揭秘
  • 算法
  • Node
  • 编码解码
  • NodeJS系列
  • Linux系列
  • JavaScript系列
  • HTTP系列
  • GIT系列
  • ES6系列
  • 设计模式系列
  • CSS系列
  • 小程序系列
  • 数据结构与算法系列
  • React系列
  • Vue3系列
  • Vue系列
  • TypeScript系列
  • Webpack系列
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 浏览器

  • webpack

  • TypeScript

    • 一、类型基础
    • 二、数据类型
    • 三、接口
    • 四、类
    • 五、类与接口的关系
    • 六、泛型
    • 七、类型检查机制
    • 八、高级类型
    • 九、ES6与CommonJS的模块系统
    • 十、使用命名空间
    • 十一、声明合并
    • 十二、如何编写声明文件?
    • 十三、tsconfig配置
    • 十四、编译工具:从ts-loader到Bable
      • awesome-typescript-loader
      • 如何选择TypeScript编译工具
    • 十五、代码检查工具:从TSLint到ESLint
    • 十六、单元测试
    • 十七、TS在react中的使用
    • 什么是TypeScript?
  • 性能

  • 工程化

  • React

  • JavaScript

  • 编程题

  • React技术揭秘

  • 算法

  • 前端
  • TypeScript
chst365
2020-04-06
目录

十四、编译工具:从ts-loader到Bable

# 十四、编译工具:从ts-loader到Bable

const HtmlWebpackPlugin = require('html-webpack-plugin')
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin')

module.exports = {
  entry: './src/index.ts',
  output: {
    filename: 'app.js'
  },
  resolve: {
    extensions: ['.js', '.ts', '.tsx'],
  },
  module: {
    rules: [
      {
        test: /\.tsx?$/i,
        use: [{
          loader: 'ts-loader',
          options: {
            // 配置项开启,编译器只做语言转换,而不做类型检查
            transpileOnly: true
          }
        }],
        exclude: /node-modules/
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/tpl/index.html'
    }),
    new ForkTsCheckerWebpackPlugin()
  ]
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

transpileOnly: 关闭,即做语言转换,又做类型检查,影响项目构建速度;开启,只做语言转换,不做类型检查,可以加快项目构建速度,但是即使ide报类型错误,也可以构建项目,当开启时可以搭配插件fork-ts-checker-webpack-plugin来进行构建项目的类型检查

# awesome-typescript-loader

与ts-loader的主要区别:

  • 更适合与Babel集成,使用Babel的转义和缓存
  • 不需要安装额外的插件,就可以把类型检查放在独立进程中进行 编译时间对比(ms): -w1382

-w1550

-w1486

Babel暂不支持以下四种语法:

// babel 不能使用下面四种语法
<!--命名空间-->
// namespace N {
//     export const n = 1
// }
<!--类型断言-->
// let s = {} as A
// s.a = 1
<!--枚举常量-->
// const enum E { A }
<!--导出-->
// export = s
1
2
3
4
5
6
7
8
9
10
11
12

# 如何选择TypeScript编译工具

-w1457

#语言#TypeScript
上次更新: 2021/04/22, 00:08:06
十三、tsconfig配置
十五、代码检查工具:从TSLint到ESLint

← 十三、tsconfig配置 十五、代码检查工具:从TSLint到ESLint→

最近更新
01
面试官
03-27
02
this&指针&作用域&闭包
03-27
03
前端
03-27
更多文章>
Theme by Vdoing | Copyright © 2019-2025 chst365 | 豫ICP备17031889号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式